</div>
-<a name="Event_schedule"></a><h2> Event schedule </h2>
+<a name="Event_schedule"></a><h2> Event schedule </h2>
<a name="Lecture_Hall_A"></a><h4> Lecture Hall A </h4>
<ul><li> 9:30 - 10:00 Breakfast and registration
<p>Saturday 18:00 - 21:00 -- FSF Social, at Redline pub in Harvard Square
</p>
-<a name="Sunday.2C_March_22nd"></a><h3>Sunday, March 22nd</h3>
+<a name="Sunday.2C_March_22nd"></a><h3>Sunday, March 22nd</h3>
-<ul><li> 9:30-10:00 -- Welcome and Breakfast
+<ul><li> 9:30-10:00 -- Welcome and Breakfast
</li><li> <a href="http://static.fsf.org/nosvn/Matt_Lee,_Deborah_Nicholson,_Rob_Myers_-_LibrePlanet_Unconference_Start_-_LibrePlanet_2009.ogg">10:00-11:00 -- Routing for the day</a>
-</li><li> 11:00-5:00 -- Lunch and <a href="http://groups.fsf.org/index.php/LibrePlanet2009/OpenConference" title="LibrePlanet2009/OpenConference">Open Conference</a>, feel free to edit the wiki with stuff you are thinking of doing.
+</li><li> 11:00-5:00 -- Lunch and <a href="http://groups.fsf.org/index.php/LibrePlanet2009/OpenConference" title="LibrePlanet2009/OpenConference">Open Conference</a>, feel free to edit the wiki with stuff you are thinking of doing.
</li>
<li>5:30 -- <a href="http://static.fsf.org/nosvn/Matt_Lee,_Deborah_Nicholson,_Rob_Myers_-_LibrePlanet_End_of_Unconference_-_LibrePlanet_2009.ogg">End of Unconference (with special musical guest, Kat Walsh)</a></li></ul>
<p></p><h4>Room 113 and 112 Floss Manuals</h4>
<html>
<head>
<title>LibrePlanet 2010</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
@import url('http://static.fsf.org/combo.css');
</style>
</head>
<body>
-<div id="doc2" class="yui-t7">
+<div id="doc2" class="yui-t7">
<div id="hd">
<h1><img src="/2010/i/lp2010.png" alt="LibrePlanet" /></h1>
</div>
<div class="yui-g">
<h2><img src="/2010/i/threedays.png" alt="Three days of free software activism"/></h2>
-
+
</div>
<div class="yui-g" id="days">
-
+
<h3>Friday</h3>
<ul>
<li>Intro to the<br>command line</li>
<html>
<head>
<title>LibrePlanet 2010</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
@import url('http://static.fsf.org/combo.css');
#saturday {background-color: #aaccee;}
-#sunday {background-color: #98fc66;}
+#sunday {background-color: #98fc66;}
</style>
</head>
<body>
-<div id="doc2" class="yui-t7">
+<div id="doc2" class="yui-t7">
<div id="hd">
<h1><img src="i/lp2010.png" alt="LibrePlanet" /></h1>
</div>
<div class="yui-g">
<h2><img src="i/threedays.png" alt="Three days of free software activism"/></h2>
-
+
</div>
<div class="yui-gb" id="days">
<div class="yui-u first" id="friday">
<li>Max Shinn/Steve DuBois (GNU Generation)</li>
<li>Marina Zhurakhinskaya (GNOME shell)</li>
<li>Richard Stallman</li>
-</ul>
-
+</ul>
+
</div>
<div class="yui-u" id="sunday">
<li>Ogg Vorbis/Theora</li>
<li>Mozilla</li>
</ul>
-
+
</div>
</div>
<html>
<head>
<title>LibrePlanet 2010</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
@import url('http://static.fsf.org/combo.css');
#saturday {background-color: #aaccee;}
-#sunday {background-color: #98fc66;}
+#sunday {background-color: #98fc66;}
</style>
</head>
<body>
-<div id="doc2" class="yui-t7">
+<div id="doc2" class="yui-t7">
<div id="hd">
<h1><img src="/2010/i/lp2010.png" alt="LibrePlanet" /></h1>
</div>
<div class="yui-g">
<h2><img src="/2010/i/threedays.png" alt="Three days of free software activism"/></h2>
-
+
</div>
<div class="yui-gb" id="days">
<div class="yui-u first" id="friday">
<li>Max Shinn/Steve DuBois (GNU Generation)</li>
<li>Marina Zhurakhinskaya (GNOME shell)</li>
<li>Richard Stallman</li>
-</ul>
-
+</ul>
+
</div>
<div class="yui-u" id="sunday">
<li>Ogg Vorbis/Theora</li>
<li>Mozilla</li>
</ul>
-
+
</div>
</div>
<html>
<head>
<title>LibrePlanet 2010</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="screen">
@import url('http://static.fsf.org/combo.css');
#saturday {background-color: #aaccee;}
-#sunday {background-color: #98fc66;}
+#sunday {background-color: #98fc66;}
</style>
</head>
<body>
-<div id="doc2" class="yui-t7">
+<div id="doc2" class="yui-t7">
<div id="hd">
<h1><img src="/2010/i/lp2010.png" alt="LibrePlanet" /></h1>
</div>
<div class="yui-g">
<h2><img src="/2010/i/threedays.png" alt="Three days of free software activism"/></h2>
-
+
</div>
<div class="yui-gb" id="days">
<div class="yui-u first" id="friday">
<li>Max Shinn/Steve DuBois (GNU Generation)</li>
<li>Marina Zhurakhinskaya (GNOME shell)</li>
<li>Richard Stallman</li>
-</ul>
-
+</ul>
+
</div>
<div class="yui-u" id="sunday">
<li>Ogg Vorbis/Theora</li>
<li>Mozilla</li>
</ul>
-
+
</div>
</div>
*
*--------------------------------------------------------------------------*/
-/**
-*
+/**
+*
* Contains portions of Rico <http://openrico.org/>
-*
-* Copyright 2005 Sabre Airline Solutions
-*
+*
+* Copyright 2005 Sabre Airline Solutions
+*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
-* permissions and limitations under the License.
+* permissions and limitations under the License.
*
**/
<head>
<title>LibrePlanet — acting locally for global free software adoption.</title>
<style type="text/css" media="screen">
-
+
@import url('http://static.fsf.org/combo.css');
@import url('screen.css?20100908');
<div class="yui-u first">
<h3>Upcoming: LibrePlanet 2011 conference.</h3>
-
+
<p class="c"><a href="/wiki/LibrePlanet2011"><img src="http://static.fsf.org/nosvn/lp2011.png" alt="March 19th 2011, Boston, Massachusetts" /></a></p>
<p>March 19th, 2011 — <a href="/wiki/LibrePlanet2011">more information</a></p>
-
+
</div>
<div class="yui-u">
<li>Previous LibrePlanet conferences: <a href="/2010">2010</a>, <a href="/2009">2009</a></li>
</ul>
-
+
</div>
</div>
(here we bring it from the remote site, but you could
easily serve up this javascript yourself) -->
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
-
+
<!-- bring in the OpenStreetMap OpenLayers layers.
Using this hosted file will make sure we are kept up
to date with any necessary changes -->
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
-
+
<script type="text/javascript">
// Start position for the map (hardcoded here for simplicity,
// but maybe you want to get from URL params)
var lat=43
var lon=-0
var zoom=3
-
+
var map; //complex object of type OpenLayers.Map
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
} );
-
-
+
+
// Define the map layer
// Note that we use a predefined layer that will be
// kept up to date with URL changes
// Other defined layers are OpenLayers.Layer.OSM.Mapnik, OpenLayers.Layer.OSM.Maplint and OpenLayers.Layer.OSM.CycleMap
layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
map.addLayer(layerTilesAtHome);
-
+
if( ! map.getCenter() ){
var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, zoom);
}
-
-
+
+
</script>
.texty h2{text-align: center; text-transform: uppercase; color: maroon; font-size: 20px; padding: 0; margin: 0}
-
+
#OpenLayers.Control.Attribution_3{background-color: black;}
#featured-boxes p, #lp-resources li {font-size: 20px;}
-
+
.middlebox{background-color: #ddd !important;}
color: #000000;
line-height:34px;
letter-spacing:-2px;
- }
+ }
#hd p a { display: block; margin: 0; }
/* show links to different language variants */
$s .= $this->variantLinks();
$s .= $this->extensionTabLinks();
-
+
$s .= " | ";
if ( $wgUser->isLoggedIn() ) {
$s .= $this->makeKnownLink( $lo, wfMsg( "logout" ), $q );
*/
class SkinModern extends SkinTemplate {
/*
- * We don't like the default getPoweredBy, the icon clashes with the
+ * We don't like the default getPoweredBy, the icon clashes with the
* skin L&F.
*/
function getPoweredBy() {
$this->stylename = 'modern';
$this->template = 'ModernTemplate';
}
-
+
function setupSkinUserCss( OutputPage $out ){
// Do not call parent::setupSkinUserCss(), we have our own print style
$out->addStyle( 'common/shared.css', 'screen' );
wfSuppressWarnings();
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
+<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
} ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
<title><?php $this->text('pagetitle') ?></title>
<?php $this->html('csslinks') ?>
<!--[if lt IE 7]><meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-
+
<?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
-
+
<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
<!-- Head Scripts -->
<?php $this->html('headscripts') ?>
<div id="mw_portlets">
<!-- portlets -->
- <?php
- $sidebar = $this->data['sidebar'];
+ <?php
+ $sidebar = $this->data['sidebar'];
if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
</div>
- <!-- footer -->
+ <!-- footer -->
<div id="footer">
<ul id="f-list">
<?php
<?php } else {
# allow raw HTML block to be defined by extensions
print $cont;
- }
+ }
?>
</div><!-- pBody -->
</div><!-- portlet -->
# "Post a comment" link
if( ( $wgTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
$s .= '<br />' . $this->makeKnownLinkObj( $wgTitle, wfMsg( 'postcomment' ), 'action=edit§ion=new' );
-
+
#if( $tns%2 && $action!='edit' && !$wpPreview) {
#$s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=new');
#}
margin: 0 !important;
float: none;
}
-#column-content #content {
- margin-top: 3em;
+#column-content #content {
+ margin-top: 3em;
height: 1%;
}
#column-one {
/* IE5.5/win- only fixes */
-#column-content {
- float: none;
+#column-content {
+ float: none;
margin-left: 0;
height: 1%;
}
/* 6.0 - only fixes */
-/* content area */
+/* content area */
/* workaround for various ie float bugs */
-#column-content {
- float: none;
+#column-content {
+ float: none;
margin-left: 0;
height: 1%;
}
background-color:#ffffff;
}
-table.gallery tr {
+table.gallery tr {
vertical-align:top;
}
text-align: center;
border: 1px solid #cccccc;
margin: 2px;
-}
+}
div.gallerytext {
overflow: hidden;
font-size: 94%;
padding: 2px 4px;
-}
+}
#xjump-to-nav {
display: none;
while (i < nodes.length) {
if(((nodes[i].style.float && nodes[i].style.float != ('none') ||
(nodes[i].align && nodes[i].align != ('none'))) &&
- (!nodes[i].style.position || nodes[i].style.position != 'relative')))
+ (!nodes[i].style.position || nodes[i].style.position != 'relative')))
{
nodes[i].style.position = 'relative';
}
var expandedURLs;
-onbeforeprint = function() {
+onbeforeprint = function() {
expandedURLs = [];
var contentEl = document.getElementById("content");
var sajax_request_type = "GET";
/**
-* if sajax_debug_mode is true, this function outputs given the message into
-* the element with id = sajax_debug; if no such element exists in the document,
+* if sajax_debug_mode is true, this function outputs given the message into
+* the element with id = sajax_debug; if no such element exists in the document,
* it is injected.
*/
function sajax_debug(text) {
? wgAjaxWatch.unwatchingMsg : wgAjaxWatch.watchingMsg);
sajax_do_call(
"wfAjaxWatch",
- [wgPageName, (wgAjaxWatch.watching ? "u" : "w")],
+ [wgPageName, (wgAjaxWatch.watching ? "u" : "w")],
wgAjaxWatch.processResult
);
// if the request isn't done in 10 seconds, allow user to try again
if( emailblockRow ) {
emailblockRow.style.display = isIp && !isEmpty ? 'none' : '';
}
-
+
var hideuserRow = document.getElementById('wpEnableHideUser');
if( hideuserRow ) {
hideuserRow.style.display = isIp && !isEmpty ? 'none' : '';
a.stub,
a.new{ color:#ba0000; text-decoration:none; }
-#toc {
+#toc {
/*border:1px solid #2f6fab;*/
border:1px solid #aaaaaa;
background-color:#f9f9f9;
}
/* images */
-div.floatright {
+div.floatright {
float: right;
clear: right;
margin: 0;
border: 0.5em solid White;
border-width: 0.5em 0 0.8em 1.4em;
}
-div.floatright p { font-style: italic;}
-div.floatleft {
- float: left;
+div.floatright p { font-style: italic;}
+div.floatleft {
+ float: left;
margin: 0.3em 0.5em 0.5em 0;
position:relative;
border: 0.5em solid White;
border-width: 0.5em 1.4em 0.8em 0;
}
-div.floatleft p { font-style: italic; }
+div.floatleft p { font-style: italic; }
/* thumbnails */
div.thumb {
margin-bottom: 0.5em;
/* table standards */
table.rimage {
- float:right;
- width:1pt;
+ float:right;
+ width:1pt;
position:relative;
- margin-left:1em;
+ margin-left:1em;
margin-bottom:1em;
text-align:center;
}
display: none;
}
-ul {
+ul {
list-style-type: square;
}
background-color:#ffffff;
}
-table.gallery tr {
+table.gallery tr {
vertical-align:top;
}
text-align: center;
border: 1px solid #cccccc;
margin: 2px;
-}
+}
div.gallerytext {
font-size: 94%;
padding: 2px 4px;
-}
+}
/*
** Diff rendering
#preftoc li { list-style: none; }
#prefcontrol { float: right; }
fieldset.prefsection,
-fieldset.operaprefsection {
+fieldset.operaprefsection {
margin-left: 0;
margin-right: 18em;
}
/* page history */
-#pagehistory .history-user {
+#pagehistory .history-user {
margin-right: 1.4em;
margin-left: 0.4em;
}
border: none;
width: 98%;
border-spacing: 4px;
-
+
/* Fixed layout is required to ensure that cells containing long URLs
don't widen in Safari, Internet Explorer, or iCab */
table-layout: fixed;
CSS 3 draft..., but Gecko doesn't support it yet:
https://bugzilla.mozilla.org/show_bug.cgi?id=99457 */
word-wrap: break-word;
-
+
/* As fallback, scrollbars will be added for very wide cells
instead of text overflowing or widening */
overflow: auto;
-
+
/* The above rule breaks on very old versions of Mozilla due
to a bug which collapses the table cells to a single line.
-
+
In Mozilla 1.1 and below with JavaScript enabled, the rule
will be overridden with this by diff.js; wide cell contents
then spill horizontally without widening the rest of the
span.diff-html-changed img{
border: 5px dotted #000099;
-
+
}
span.diff-html-changed {
position: relative; /* this is key */
cursor: help;
}
-
+
span.diff-html-changed span.tip {
display: none; /* so is this */
}
/* tooltip will display on :hover event */
-
+
span.diff-html-changed:hover span.tip {
display: block;
z-index: 95;
var winScroll = document.documentElement.scrollTop
else if (document.body)
var winScroll = document.body.scrollTop;
- //get current selection
+ //get current selection
txtarea.focus();
var range = document.selection.createRange();
selText = range.text;
if (isSample && range.moveStart) {
if (window.opera)
tagClose = tagClose.replace(/\n/g,'');
- range.moveStart('character', - tagClose.length - selText.length);
- range.moveEnd('character', - tagClose.length);
+ range.moveStart('character', - tagClose.length - selText.length);
+ range.moveEnd('character', - tagClose.length);
}
- range.select();
+ range.select();
//restore window scroll position
if (document.documentElement && document.documentElement.scrollTop)
document.documentElement.scrollTop = winScroll
}
//restore textarea scroll position
txtarea.scrollTop = textScroll;
- }
+ }
function checkSelectedText(){
if (!selText) {
} else if (selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
selText = selText.substring(0, selText.length - 1);
tagClose += ' '
- }
+ }
}
}
if( scrollTop.value )
editBox.scrollTop = scrollTop.value;
addHandler( editForm, 'submit', function() {
- document.getElementById( 'wpScrolltop' ).value = document.getElementById( 'wpTextbox1' ).scrollTop;
+ document.getElementById( 'wpScrolltop' ).value = document.getElementById( 'wpTextbox1' ).scrollTop;
} );
}
}
-/*
+/*
JavaScript file for enhanced recentchanges
*/
-
+
/*
* Add the CSS to hide parts that should be collapsed
*
/*
* Switch an RC line between hidden/shown
* @param int idNumber : the id number of the RC group
-*/
+*/
function toggleVisibility(idNumber) {
var openarrow = document.getElementById("mw-rc-openarrow-"+idNumber);
var closearrow = document.getElementById("mw-rc-closearrow-"+idNumber);
*/
.TablePager_nav a { text-decoration: none; }
.TablePager { border-collapse: collapse; }
-.TablePager, .TablePager td, .TablePager th {
+.TablePager, .TablePager td, .TablePager th {
border: 0.15em solid #777777;
padding: 0 0.15em 0 0.15em;
}
/* All good */
dismissNotify(i18n(wgLivepreviewMessageReady), 750);
-
+
var XMLObject = lpRequest.responseXML.documentElement;
lpShowNormalPreview();
return;
}
-
+
/* Inject categories */
var categoryContainer = document.getElementById( lpIdCategories );
var box = document.getElementById( opts.tableId );
if( !box )
return false;
-
+
var boxbody = box.getElementsByTagName('tbody')[0]
var row = document.createElement( 'tr' );
boxbody.insertBefore( row, boxbody.firstChild );
padding-right: 1.5em;
}
-/*
+/*
* OpenSearch ajax suggestions
*/
.os-suggest {
- overflow: auto;
- overflow-x: hidden;
+ overflow: auto;
+ overflow-x: hidden;
position: absolute;
top: 0px;
left: 0px;
width: 0px;
- background-color: white;
+ background-color: white;
background-color: Window;
border-style: solid;
border-color: #AAAAAA;
border-width: 1px;
- z-index:99;
- visibility:hidden;
- font-size:95%;
+ z-index:99;
+ visibility:hidden;
+ font-size:95%;
}
table.os-suggest-results {
font-size: 95%;
- cursor: pointer;
+ cursor: pointer;
border: 0;
border-collapse: collapse;
width: 100%;
td.os-suggest-result, td.os-suggest-result-hl {
white-space: nowrap;
- background-color: white;
+ background-color: white;
background-color: Window;
color: black;
color: WindowText;
}
td.os-suggest-result-hl,
td.os-suggest-result-hl-webkit {
- background-color: #4C59A6;
+ background-color: #4C59A6;
color: white;
}
td.os-suggest-result-hl {
}
.os-suggest-toggle {
- position: relative;
+ position: relative;
left: 1ex;
font-size: 65%;
}
/*
* Special:ListGroupRights styling
- * Special:Statistics styling
+ * Special:Statistics styling
*/
table.mw-listgrouprights-table,
if(bw.ns4||bw.opera){MM_reloadPage(true);}
var noFix=bw.ie4||bw.ns4||(bw.macie50)?true:false;
if (window.attachEvent){fix_bind()}
- else if(noFix){
+ else if(noFix){
if(bw.ns6){document.getElementById(eID).style.position="absolute";}
if(bw.macie50){document.getElementById(eID).style.position="absolute";document.getElementById(eID).style.backgroundColor="#ccffcc";}
if(bw.ns6&&YOffset==0){YOffset=-15}
fix_elements[fix_elements.length] = document.all[i];
window.attachEvent('onscroll', fix_event);
window.attachEvent('onresize', fix_event);
- }
+ }
}
}
// -------------------------
this.nameToCheck = destFile.value ;
- // Clear timer
+ // Clear timer
if ( this.timeoutID ) {
window.clearTimeout( this.timeoutID );
}
this.nameToCheck = fname;
this.timeout();
},
-
+
'timeout' : function() {
if ( !wgAjaxUploadDestCheck || !sajax_init_object() ) return;
injectSpinner( document.getElementById( 'wpDestFile' ), 'destcheck' );
- // Get variables into local scope so that they will be preserved for the
- // anonymous callback. fileName is copied so that multiple overlapping
+ // Get variables into local scope so that they will be preserved for the
+ // anonymous callback. fileName is copied so that multiple overlapping
// ajax requests can be supported.
var obj = this;
var fileName = this.nameToCheck;
- sajax_do_call( 'UploadForm::ajaxGetExistsWarning', [this.nameToCheck],
+ sajax_do_call( 'UploadForm::ajaxGetExistsWarning', [this.nameToCheck],
function (result) {
obj.processResult(result, fileName)
}
var ackElt = document.getElementById( 'wpDestFileWarningAck' );
this.setInnerHTML(warningElt, warning);
- // Set a value in the form indicating that the warning is acknowledged and
+ // Set a value in the form indicating that the warning is acknowledged and
// doesn't need to be redisplayed post-upload
if ( warning == '' || warning == ' ' ) {
ackElt.value = '';
}
var wgUploadLicenseObj = {
-
+
'responseCache' : { '' : '' },
'fetchPreview': function( license ) {
if( previewPanel.innerHTML != preview )
previewPanel.innerHTML = preview;
}
-
+
}
addOnloadHook( licenseSelectorFixup );
\ No newline at end of file
'&action=raw&ctype=text/javascript';
return importScriptURI(uri);
}
-
+
var loadedScripts = {}; // included-scripts tracker
function importScriptURI(url) {
if (loadedScripts[url]) {
document.getElementsByTagName('head')[0].appendChild(s);
return s;
}
-
+
function importStylesheet(page) {
return importStylesheetURI(wgScript + '?action=raw&ctype=text/css&title=' + encodeURIComponent(page.replace(/ /g,'_')));
}
-
+
function importStylesheetURI(url) {
return document.createStyleSheet ? document.createStyleSheet(url) : appendCSS('@import "' + url + '";');
}
-
+
function appendCSS(text) {
var s = document.createElement('style');
s.type = 'text/css';
// Separators
ascii = wgSeparatorTransformTable[0].split("\t");
localised = wgSeparatorTransformTable[1].split("\t");
- for ( var i = 0; i < ascii.length; i++ ) {
+ for ( var i = 0; i < ascii.length; i++ ) {
ts_number_transform_table[localised[i]] = ascii[i];
}
// Digits
ascii = wgDigitTransformTable[0].split("\t");
localised = wgDigitTransformTable[1].split("\t");
- for ( var i = 0; i < ascii.length; i++ ) {
+ for ( var i = 0; i < ascii.length; i++ ) {
ts_number_transform_table[localised[i]] = ascii[i];
}
maxDigitLength = 1;
for ( var digit in ts_number_transform_table ) {
// Escape regex metacharacters
- digits.push(
+ digits.push(
digit.replace( /[\\\\$\*\+\?\.\(\)\|\{\}\[\]\-]/,
function( s ) { return '\\' + s; } )
);
return s.toLowerCase();
}
-function ts_dateToSortKey(date) {
+function ts_dateToSortKey(date) {
// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
if (date.length == 11) {
switch (date.substr(3,3).toLowerCase()) {
}
} else if (date.length == 8) {
yr = date.substr(6,2);
- if (parseInt(yr) < 50) {
- yr = '20'+yr;
- } else {
- yr = '19'+yr;
+ if (parseInt(yr) < 50) {
+ yr = '20'+yr;
+ } else {
+ yr = '19'+yr;
}
if (ts_europeandate == true) {
return yr+date.substr(3,2)+date.substr(0,2);
}
if (ts_number_transform_table != false) {
var newNum = '', c;
-
+
for ( var p = 0; p < s.length; p++ ) {
c = s.charAt( p );
if (c in ts_number_transform_table) {
/*
* End of table sorting code
*/
-
-
+
+
/**
* Add a cute little box at the top of the screen to inform the user of
* something, replacing any preexisting message.
if( className ) {
messageDiv.setAttribute( 'class', 'mw-js-message-'+className );
}
-
+
if (typeof message === 'object') {
while (messageDiv.hasChildNodes()) // Remove old content
messageDiv.removeChild(messageDiv.firstChild);
{if undelete {<div id="contentSub2"><span class="subpages">{undelete}</span></div> }}
{if newtalk {<div class="usermessage">{newtalk}</div> }}
{if showjumplinks {
- <div id="jump-to-nav">{msg {jumpto}} <a href="#column-one">{msg {jumptonavigation}}</a>,
- <a href="#searchInput">{msg {jumptosearch}}</a></div>
+ <div id="jump-to-nav">{msg {jumpto}} <a href="#column-one">{msg {jumptonavigation}}</a>,
+ <a href="#searchInput">{msg {jumptosearch}}</a></div>
}}
<!-- start content -->
{bodytext}
}}
}}
}}
-
+
{if {{ is_allowed {delete} }} {
<li id="ca-delete" {selecttab {delete}}><a href="{localurl {action=delete}}">{msg {delete}}</a></li>
}}
<div class="portlet" id="p-personal">
<h5>{msg {personaltools}}</h5>
<div class="pBody">
- <ul>
+ <ul>
{personal_urls { <li id="pt-$key" $classactive ><a href="$href" $class>$text</a></li> }}
</ul>
</div>
</div>
} {
<li class="$class"><a href="$href">$text</a></li>
- }}
+ }}
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer">
* The other thing is that lots of dependencies that are declared in the callbacks
* are not intelligently handled. There's some room for improvement there.
*
- * The class is derived from SkinTemplate, but that's only temporary. Eventually
- * it'll be derived from Skin, and I've avoided using SkinTemplate functions as
- * much as possible. In fact, the only SkinTemplate dependencies I know of at the
- * moment are the functions to generate the gen=css and gen=js files.
- *
+ * The class is derived from SkinTemplate, but that's only temporary. Eventually
+ * it'll be derived from Skin, and I've avoided using SkinTemplate functions as
+ * much as possible. In fact, the only SkinTemplate dependencies I know of at the
+ * moment are the functions to generate the gen=css and gen=js files.
+ *
*/
class SkinMonoBookCBT extends SkinTemplate {
var $mOut, $mTitle;
/******************************************************
* General functions *
******************************************************/
-
+
/** Execute the template and write out the result */
function outputPage( &$out ) {
echo $this->execute( $out );
wfProfileIn( $fname );
wfProfileIn( "$fname-setup" );
Skin::initPage( $out );
-
+
$this->mOut =& $out;
$this->mTitle =& $wgTitle;
$sourceFile = "$wgStyleDirectory/MonoBook.tpl";
wfProfileOut( "$fname-setup" );
-
+
if ( $wgParserCacheType == CACHE_NONE ) {
$template = file_get_contents( $sourceFile );
$text = $this->executeTemplate( $template );
} else {
$compiled = $this->getCompiledTemplate( $sourceFile );
-
+
wfProfileIn( "$fname-eval" );
$text = eval( $compiled );
wfProfileOut( "$fname-eval" );
$fname = 'SkinMonoBookCBT::getCompiledTemplate';
$expiry = 3600;
-
+
// Sandbox template execution
if ( $this->mCompiling ) {
return;
}
-
+
wfProfileIn( $fname );
// Is the request an ordinary page view?
- if ( $wgRequest->wasPosted() ||
- count( array_diff( array_keys( $_GET ), array( 'title', 'useskin', 'recompile' ) ) ) != 0 )
+ if ( $wgRequest->wasPosted() ||
+ count( array_diff( array_keys( $_GET ), array( 'title', 'useskin', 'recompile' ) ) ) != 0 )
{
$type = 'nonview';
} else {
$recompileUser = false;
$recompileGeneric = false;
}
-
- if ( !$recompileUser ) {
+
+ if ( !$recompileUser ) {
$php = $parserMemc->get( $cacheKey );
}
if ( $recompileUser || !$php ) {
$compiled = $this->compileTemplate( $template, $ignore );
// Reduce whitespace
- // This is done here instead of in CBTProcessor because we can be
+ // This is done here instead of in CBTProcessor because we can be
// more sure it is safe here.
$compiled = preg_replace( '/^[ \t]+/m', '', $compiled );
$compiled = preg_replace( '/[\r\n]+/', "\n", $compiled );
wfProfileIn( $fname );
$tp = new CBTProcessor( $template, $this );
$tp->mFunctionCache = $this->mFunctionCache;
-
+
$this->mCompiling = true;
$text = $tp->execute();
$this->mCompiling = false;
wfProfileOut( $fname );
return $text;
}
-
+
/******************************************************
* Callbacks *
******************************************************/
global $wgContLang;
return $wgContLang->isRTL() ? 'rtl' : 'ltr';
}
-
+
function mimetype() { return $GLOBALS['wgMimeType']; }
function charset() { return $GLOBALS['wgOutputEncoding']; }
- function headlinks() {
+ function headlinks() {
return cbt_value( $this->mOut->getHeadLinks(), 'dynamic' );
}
- function headscripts() {
+ function headscripts() {
return cbt_value( $this->mOut->getScript(), 'dynamic' );
}
-
- function pagetitle() {
- return cbt_value( $this->mOut->getHTMLTitle(), array( 'title', 'lang' ) );
+
+ function pagetitle() {
+ return cbt_value( $this->mOut->getHTMLTitle(), array( 'title', 'lang' ) );
}
-
+
function stylepath() { return $GLOBALS['wgStylePath']; }
function stylename() { return $this->mStyleName; }
-
+
function notprintable() {
global $wgRequest;
return cbt_value( !$wgRequest->getBool( 'printable' ), 'nonview dynamic' );
}
-
+
function jsmimetype() { return $GLOBALS['wgJsMimeType']; }
-
+
function jsvarurl() {
global $wgUseSiteJs, $wgUser;
if ( !$wgUseSiteJs ) return '';
-
+
if ( $wgUser->isLoggedIn() ) {
$url = self::makeUrl( '-','action=raw&smaxage=0&gen=js' );
} else {
}
return cbt_value( $url, 'loggedin' );
}
-
+
function pagecss() {
global $wgHooks;
-
+
$out = false;
wfRunHooks( 'SkinTemplateSetupPageCss', array( &$out ) );
// Unknown dependencies
return cbt_value( $out, 'dynamic' );
}
-
+
function usercss() {
if ( $this->isCssPreview() ) {
global $wgRequest;
$usercss = $this->makeStylesheetCdata( $wgRequest->getText('wpTextbox1') );
} else {
- $usercss = $this->makeStylesheetLink( self::makeUrl($this->getUserPageText() .
+ $usercss = $this->makeStylesheetLink( self::makeUrl($this->getUserPageText() .
'/'.$this->mStyleName.'.css', 'action=raw&ctype=text/css' ) );
}
// Dynamic when not an ordinary page view, also depends on the username
return cbt_value( $usercss, array( 'nonview dynamic', 'user' ) );
}
-
+
function sitecss() {
global $wgUseSiteCss;
if ( !$wgUseSiteCss ) {
}
global $wgSquidMaxage, $wgContLang, $wgStylePath;
-
+
$query = "action=raw&ctype=text/css&smaxage=$wgSquidMaxage";
-
+
$sitecss = '';
if ( $wgContLang->isRTL() ) {
$sitecss .= $this->makeStylesheetLink( $wgStylePath . '/' . $this->mStyleName . '/rtl.css' ) . "\n";
function gencss() {
global $wgUseSiteCss;
if ( !$wgUseSiteCss ) return '';
-
+
global $wgSquidMaxage, $wgUser, $wgAllowUserCss;
if ( $this->isCssPreview() ) {
$siteargs = '&smaxage=0&maxage=0';
} else {
$isTemplate = false;
}
-
+
$link = $this->makeStylesheetLink( self::makeUrl('-','action=raw&gen=css' . $siteargs) ) . "\n";
if ( $wgAllowUserCss ) {
$deps = 'loggedin';
- } else {
+ } else {
$deps = array();
}
return cbt_value( $link, $deps, $isTemplate );
}
-
+
function user_touched() {
global $wgUser;
return cbt_value( $wgUser->mTouched, 'dynamic' );
}
-
+
function userjs() {
global $wgAllowUserJs, $wgJsMimeType;
if ( !$wgAllowUserJs ) return '';
-
+
if ( $this->isJsPreview() ) {
$url = '';
} else {
}
return cbt_value( $url, array( 'nonview dynamic', 'user' ) );
}
-
+
function userjsprev() {
global $wgAllowUserJs, $wgRequest;
if ( !$wgAllowUserJs ) return '';
}
return cbt_value( $js, array( 'nonview dynamic' ) );
}
-
+
function trackbackhtml() {
global $wgUseTrackbacks;
if ( !$wgUseTrackbacks ) return '';
}
return cbt_value( $tb, 'dynamic' );
}
-
+
function body_ondblclick() {
global $wgUser;
if( $this->isEditable() && $wgUser->getOption("editondblclick") ) {
return cbt_value( $js, 'loggedin dynamic' );
}
}
-
+
function body_onload() {
global $wgUser;
if ( $this->isEditable() && $wgUser->getOption( 'editsectiononrightclick' ) ) {
}
return cbt_value( $js, 'loggedin dynamic' );
}
-
+
function nsclass() {
return cbt_value( 'ns-' . $this->mTitle->getNamespace(), 'title' );
}
-
+
function sitenotice() {
- // Perhaps this could be given special dependencies using our knowledge of what
+ // Perhaps this could be given special dependencies using our knowledge of what
// wfGetSiteNotice() depends on.
return cbt_value( wfGetSiteNotice(), 'dynamic' );
}
-
+
function title() {
return cbt_value( $this->mOut->getPageTitle(), array( 'title', 'lang' ) );
}
}
return cbt_value( $s, array( 'title', 'nonview dynamic' ) );
}
-
+
function undelete() {
return cbt_value( $this->getUndeleteLink(), array( 'title', 'lang' ) );
}
-
+
function newtalk() {
global $wgUser, $wgDBname;
$newtalks = $wgUser->getNewMessageLinks();
$sep = str_replace("_", " ", wfMsgHtml("newtalkseparator"));
$msgs = array();
foreach ($newtalks as $newtalk) {
- $msgs[] = wfElement("a",
+ $msgs[] = wfElement("a",
array('href' => $newtalk["link"]), $newtalk["wiki"]);
}
$parts = implode($sep, $msgs);
}
return cbt_value( $ntl, 'dynamic' );
}
-
+
function showjumplinks() {
global $wgUser;
return cbt_value( $wgUser->getOption( 'showjumplinks' ) ? 'true' : '', 'user' );
}
-
+
function bodytext() {
return cbt_value( $this->mOut->getHTML(), 'dynamic' );
}
-
+
function catlinks() {
if ( !isset( $this->mCatlinks ) ) {
$this->mCatlinks = $this->getCategories();
}
return cbt_value( $this->mCatlinks, 'dynamic' );
}
-
+
function extratabs( $itemTemplate ) {
global $wgContLang, $wgDisableLangConversion;
-
+
$etpl = cbt_escape( $itemTemplate );
/* show links to different language variants */
return cbt_value( $wgRequest->getRequestURL(), 'dynamic' );
}
- function subject_url() {
+ function subject_url() {
$title = $this->getSubjectPage();
if ( $title->exists() ) {
$url = $title->getLocalUrl();
} else {
$url = $title->getLocalUrl( 'action=edit' );
}
- return cbt_value( $url, 'title' );
+ return cbt_value( $url, 'title' );
}
function talk_url() {
} else {
$action = $this->getAction();
$section = $this->getSection();
-
+
if ( isset( $actionTabs[$action] ) ) {
$this->mSelectedTab = $actionTabs[$action];
$s = 'class="selected ' . htmlspecialchars( $extraclass ) . '"';
} else {
$s = 'class="' . htmlspecialchars( $extraclass ) . '"';
- }
+ }
} else {
if ( $this->mSelectedTab == $tab ) {
$s = 'class="selected"';
$title = $this->getTalkPage();
$class = $title->exists() ? '' : 'new';
return cbt_value( $class, 'dynamic' );
- }
+ }
function ca_variant( $code, $name, $index, $template ) {
global $wgContLang;
$actstr = '';
if( $action )
$actstr = 'action=' . $action . '&';
- $s = strtr( $template, array(
+ $s = strtr( $template, array(
'$id' => htmlspecialchars( 'varlang-' . $index ),
'$class' => $selected ? 'class="selected"' : '',
'$text' => $name,
return cbt_value( (string)$this->mTitle->userIsWatching(), array( 'dynamic' ) );
}
-
+
function personal_urls( $itemTemplate ) {
global $wgShowIPinHeader, $wgContLang;
# Split this function up into many small functions, to obtain the
- # best specificity in the dependencies of each one. The template below
+ # best specificity in the dependencies of each one. The template below
# has no dependencies, so its generation, and any static subfunctions,
# can be optimised away.
$etpl = cbt_escape( $itemTemplate );
}
return cbt_value( $s, 'user' );
}
-
+
function mytalk( $itemTemplate ) {
global $wgUser;
if ( $this->isLoggedIn() ) {
}
return cbt_value( $s, 'user' );
}
-
+
function preferences( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'preferences',
+ $s = $this->makeSpecialTemplateLink( $itemTemplate, 'preferences',
'Preferences', wfMsg( 'preferences' ) );
} else {
$s = '';
}
return cbt_value( $s, array( 'loggedin', 'lang' ) );
}
-
+
function watchlist( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'watchlist',
+ $s = $this->makeSpecialTemplateLink( $itemTemplate, 'watchlist',
'Watchlist', wfMsg( 'watchlist' ) );
} else {
$s = '';
}
return cbt_value( $s, array( 'loggedin', 'lang' ) );
}
-
+
function mycontris( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
global $wgUser;
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'mycontris',
+ $s = $this->makeSpecialTemplateLink( $itemTemplate, 'mycontris',
"Contributions/" . $wgUser->getTitleKey(), wfMsg('mycontris') );
} else {
$s = '';
}
return cbt_value( $s, 'user' );
}
-
+
function logout( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'logout',
- 'Userlogout', wfMsg( 'userlogout' ),
- $this->mTitle->getNamespace() === NS_SPECIAL && $this->mTitle->getText() === 'Preferences'
+ $s = $this->makeSpecialTemplateLink( $itemTemplate, 'logout',
+ 'Userlogout', wfMsg( 'userlogout' ),
+ $this->mTitle->getNamespace() === NS_SPECIAL && $this->mTitle->getText() === 'Preferences'
? '' : "returnto=" . $this->mTitle->getPrefixedURL() );
} else {
$s = '';
}
return cbt_value( $s, 'loggedin dynamic' );
}
-
+
function anonuserpage( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
$s = '';
}
return cbt_value( $s, '!loggedin dynamic' );
}
-
+
function anontalk( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
$s = '';
}
return cbt_value( $s, '!loggedin dynamic' );
}
-
+
function anonlogin( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
$s = '';
} else {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'anonlogin', 'Userlogin',
+ $s = $this->makeSpecialTemplateLink( $itemTemplate, 'anonlogin', 'Userlogin',
wfMsg( 'userlogin' ), 'returnto=' . urlencode( $this->getThisPDBK() ) );
}
return cbt_value( $s, '!loggedin dynamic' );
}
-
+
function login( $itemTemplate ) {
if ( $this->isLoggedIn() ) {
$s = '';
} else {
- $s = $this->makeSpecialTemplateLink( $itemTemplate, 'login', 'Userlogin',
+ $s = $this->makeSpecialTemplateLink( $itemTemplate, 'login', 'Userlogin',
wfMsg( 'userlogin' ), 'returnto=' . urlencode( $this->getThisPDBK() ) );
}
return cbt_value( $s, '!loggedin dynamic' );
}
-
+
function logopath() { return $GLOBALS['wgLogo']; }
function mainpage() { return self::makeMainPageUrl(); }
-
+
function sidebar( $startSection, $endSection, $innerTpl ) {
$s = '';
$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
continue;
if (strpos($line, '**') !== 0) {
$bar = trim($line, '* ');
- $name = wfMsg( $bar );
+ $name = wfMsg( $bar );
if (wfEmptyMsg($bar, $name)) {
$name = $bar;
}
$s .= $endSection;
}
$s .= strtr( $startSection,
- array(
+ array(
'$bar' => htmlspecialchars( $bar ),
'$barname' => $name
) );
if (wfEmptyMsg($line[0], $link))
$link = $line[0];
$href = self::makeInternalOrExternalUrl( $link );
-
+
$s .= strtr( $innerTpl,
array(
'$text' => htmlspecialchars( $text ),
// Depends on user language only
return cbt_value( $s, 'lang' );
}
-
+
function searchaction() {
// Static link
return $this->getSearchLink();
}
-
+
function search() {
global $wgRequest;
return cbt_value( trim( $this->getSearch() ), 'special dynamic' );
}
-
+
function notspecialpage() {
return cbt_value( $this->mTitle->getNamespace() != NS_SPECIAL, 'special' );
}
-
+
function nav_whatlinkshere() {
return cbt_value( $this->makeSpecialParamUrl('Whatlinkshere' ), array(), true );
}
function article_exists() {
return cbt_value( (string)($this->mTitle->getArticleId() !== 0), 'title' );
}
-
+
function nav_recentchangeslinked() {
return cbt_value( $this->makeSpecialParamUrl('Recentchangeslinked' ), array(), true );
}
-
+
function feeds( $itemTemplate = '' ) {
if ( !$this->mOut->isSyndicated() ) {
$feeds = '';
global $wgFeedClasses, $wgRequest;
foreach( $wgFeedClasses as $format => $class ) {
$feeds .= strtr( $itemTemplate,
- array(
+ array(
'$key' => htmlspecialchars( $format ),
'$text' => $format,
'$href' => $wgRequest->appendQuery( "feed=$format" )
global $wgUser;
return cbt_value( (string)$wgUser->isAllowed( $right ), 'user' );
}
-
+
function nav_blockip() {
$url = $this->makeSpecialParamUrl( 'Blockip', '', '{title_userurl}' );
return cbt_value( $url, array(), true );
}
-
+
function nav_emailuser() {
global $wgEnableEmail, $wgEnableUserEmail, $wgUser;
if ( !$wgEnableEmail || !$wgEnableUserEmail ) return '';
-
+
$url = $this->makeSpecialParamUrl( 'Emailuser', '', '{title_userurl}' );
return cbt_value( $url, array(), true );
}
-
+
function nav_upload() {
global $wgEnableUploads, $wgUploadNavigationUrl;
- if ( !$wgEnableUploads ) {
+ if ( !$wgEnableUploads ) {
return '';
} elseif ( $wgUploadNavigationUrl ) {
return $wgUploadNavigationUrl;
return self::makeSpecialUrl('Upload');
}
}
-
+
function nav_specialpages() {
return self::makeSpecialUrl('Specialpages');
}
-
+
function nav_print() {
global $wgRequest, $wgArticle;
$action = $this->getAction();
$url = '';
- if( $this->mTitle->getNamespace() !== NS_SPECIAL
- && ($action == '' || $action == 'view' || $action == 'purge' ) )
+ if( $this->mTitle->getNamespace() !== NS_SPECIAL
+ && ($action == '' || $action == 'view' || $action == 'purge' ) )
{
$revid = $wgArticle->getLatest();
if ( $revid != 0 ) {
}
return cbt_value( $url, array( 'nonview dynamic', 'title' ) );
}
-
+
function nav_permalink() {
$url = (string)$this->getPermalink();
return cbt_value( $url, 'dynamic' );
return cbt_value( $this->mTitle->trackbackURL(), 'title' );
}
-
+
function is_permalink() {
return cbt_value( (string)($this->getPermalink() === false), 'nonview dynamic' );
}
-
+
function toolboxend() {
// This is where the MonoBookTemplateToolboxEnd hook went in the old skin
return '';
}
-
+
function language_urls( $outer, $inner ) {
global $wgHideInterlanguageLinks, $wgOut, $wgContLang;
if ( $wgHideInterlanguageLinks ) return '';
}
return cbt_value( $s, 'dynamic' );
}
-
+
function poweredbyico() { return $this->getPoweredBy(); }
function copyrightico() { return $this->getCopyrightIcon(); }
- function lastmod() {
+ function lastmod() {
global $wgMaxCredits;
if ( $wgMaxCredits ) return '';
if ( !isset( $this->mLastmod ) ) {
if ( $this->isCurrentArticleView() ) {
- $this->mLastmod = $this->lastModified();
+ $this->mLastmod = $this->lastModified();
} else {
$this->mLastmod = '';
}
}
return cbt_value( $this->mLastmod, 'dynamic' );
}
-
+
function viewcount() {
global $wgDisableCounters;
if ( $wgDisableCounters ) return '';
-
+
global $wgLang, $wgArticle;
if ( is_object( $wgArticle ) ) {
$viewcount = $wgLang->formatNum( $wgArticle->getCount() );
}
return cbt_value( $viewcount, 'dynamic' );
}
-
+
function numberofwatchingusers() {
global $wgPageShowWatchingUsers;
if ( !$wgPageShowWatchingUsers ) return '';
}
return cbt_value( $s, 'dynamic' );
}
-
+
function credits() {
global $wgMaxCredits;
if ( !$wgMaxCredits ) return '';
-
+
if ( $this->isCurrentArticleView() ) {
require_once("Credits.php");
global $wgArticle, $wgShowCreditsIfMax;
}
return cbt_value( $credits, 'view dynamic' );
}
-
+
function normalcopyright() {
return $this->getCopyright( 'normal' );
}
function usehistorycopyright() {
global $wgRequest;
if ( wfMsgForContent( 'history_copyright' ) == '-' ) return '';
-
+
$oldid = $this->getOldId();
$diff = $this->getDiff();
$use = (string)(!is_null( $oldid ) && is_null( $diff ));
return cbt_value( $use, 'nonview dynamic' );
}
-
+
function privacy() {
return cbt_value( $this->privacyLink(), 'lang' );
}
function disclaimer() {
return cbt_value( $this->disclaimerLink(), 'lang' );
}
- function tagline() {
+ function tagline() {
# A reference to this tag existed in the old MonoBook.php, but the
# template data wasn't set anywhere
- return '';
+ return '';
}
function reporttime() {
return cbt_value( $this->mOut->reportTime(), 'dynamic' );
}
-
+
function msg( $name ) {
return cbt_value( wfMsg( $name ), 'lang' );
}
-
+
function fallbackmsg( $name, $fallback ) {
$text = wfMsg( $name );
if ( wfEmptyMsg( $name, $text ) ) {
function isCssPreview() {
if ( !isset( $this->mCssPreview ) ) {
global $wgRequest, $wgAllowUserCss, $wgUser;
- $this->mCssPreview =
+ $this->mCssPreview =
$wgAllowUserCss &&
$wgUser->isLoggedIn() &&
- $this->mTitle->isCssSubpage() &&
+ $this->mTitle->isCssSubpage() &&
$this->userCanPreview( $this->getAction() );
}
return $this->mCssPreview;
function isJsPreview() {
if ( !isset( $this->mJsPreview ) ) {
global $wgRequest, $wgAllowUserJs, $wgUser;
- $this->mJsPreview =
+ $this->mJsPreview =
$wgAllowUserJs &&
$wgUser->isLoggedIn() &&
- $this->mTitle->isJsSubpage() &&
+ $this->mTitle->isJsSubpage() &&
$this->userCanPreview( $this->getAction() );
}
return $this->mJsPreview;
return $this->mThisTitleUrlForm;
}
- /**
+ /**
* If the current page is a user page, get the user's ID and IP. Otherwise return array(0,false)
*/
function getUserPageIdIp() {
}
return array( $this->mUserPageId, $this->mUserPageIp );
}
-
+
/**
- * Returns a permalink URL, or false if the current page is already a
+ * Returns a permalink URL, or false if the current page is already a
* permalink, or blank if a permalink shouldn't be displayed
*/
function getPermalink() {
$action = $this->getAction();
$oldid = $this->getOldId();
$url = '';
- if( $this->mTitle->getNamespace() !== NS_SPECIAL
+ if( $this->mTitle->getNamespace() !== NS_SPECIAL
&& $this->mTitle->getArticleId() != 0
- && ($action == '' || $action == 'view' || $action == 'purge' ) )
+ && ($action == '' || $action == 'view' || $action == 'purge' ) )
{
if ( !$oldid ) {
- $revid = $wgArticle->getLatest();
+ $revid = $wgArticle->getLatest();
$url = $this->mTitle->getLocalURL( "oldid=$revid" );
} else {
$url = false;
if ( !isset( $this->mIsArticleView ) ) {
$oldid = $this->getOldId();
$diff = $this->getDiff();
- $this->mIsArticleView = $wgOut->isArticle() and
+ $this->mIsArticleView = $wgOut->isArticle() and
(!is_null( $oldid ) or is_null( $diff )) and 0 != $wgArticle->getID();
}
return $this->mIsArticleView;
/**
- * Return true if the current page is editable; if edit section on right
+ * Return true if the current page is editable; if edit section on right
* click should be enabled.
*/
function isEditable() {
function getPageUrl() {
if ( !isset( $this->mPageUrl ) ) {
$this->mPageUrl = $this->mTitle->getLocalURL();
- }
+ }
return $this->mPageUrl;
}
/** Make a link to a title using a template */
function makeTemplateLink( $template, $key, $title, $text ) {
$url = $title->getLocalUrl();
- return strtr( $template,
- array(
+ return strtr( $template,
+ array(
'$key' => $key,
'$classactive' => ($url == $this->getPageUrl()) ? 'class="active"' : '',
- '$class' => $title->getArticleID() == 0 ? 'class="new"' : '',
+ '$class' => $title->getArticleID() == 0 ? 'class="new"' : '',
'$href' => htmlspecialchars( $url ),
'$text' => $text
) );
/** Make a link to a URL using a template */
function makeTemplateLinkUrl( $template, $key, $url, $text ) {
- return strtr( $template,
- array(
+ return strtr( $template,
+ array(
'$key' => $key,
'$classactive' => ($url == $this->getPageUrl()) ? 'class="active"' : '',
- '$class' => '',
+ '$class' => '',
'$href' => htmlspecialchars( $url ),
'$text' => $text
) );
$url = self::makeSpecialUrl( $specialName, $query );
// Ignore the query when comparing
$active = ($this->mTitle->getNamespace() == NS_SPECIAL && $this->mTitle->getDBkey() == $specialName);
- return strtr( $template,
- array(
+ return strtr( $template,
+ array(
'$key' => $key,
'$classactive' => $active ? 'class="active"' : '',
- '$class' => '',
+ '$class' => '',
'$href' => htmlspecialchars( $url ),
'$text' => $text
) );
$this->mSearch = $wgRequest->getVal( 'search' );
$this->mRequestValuesLoaded = true;
}
-
+
/** Get the action parameter of the request */
margin: 0 !important;
float: none;
}
-#column-content #content {
- margin-top: 3em;
+#column-content #content {
+ margin-top: 3em;
height: 1%;
}
#column-one {
/* IE5.5/win- only fixes */
-#column-content {
- float: none;
+#column-content {
+ float: none;
margin-left: 0;
height: 1%;
}
/* 6.0 - only fixes */
-/* content area */
+/* content area */
/* workaround for various ie float bugs */
-#column-content {
- float: none;
+#column-content {
+ float: none;
margin-left: 0;
height: 1%;
}
/* 7.0 - only fixes */
-/* content area */
+/* content area */
/* workaround for various ie float bugs */
/* This bit is needed to make links clickable... WTF */
z-index: 3;
}
#portal-footer {
- margin-left: 12em;
+ margin-left: 12em;
}
/*
#portlet-contentViews {
margin-right: 2em;
}
.prefsection legend {
- font-weight: bold;
+ font-weight: bold;
}
.prefsection table, .prefsection legend {
background-color: #F9F9F9;
.TablePager { min-width: 80%; }
.TablePager_nav a { text-decoration: none; }
.TablePager { border-collapse: collapse; }
-.TablePager, .TablePager td, .TablePager th {
+.TablePager, .TablePager td, .TablePager th {
border: 1px solid #aaaaaa;
padding: 0 0.15em 0 0.15em;
}
margin-right: 13.6em;
border-left: 0;
border-right: 1px solid #fabd23;
-}
-* html #column-content {
+}
+* html #column-content {
float: none;
margin-left: 0;
margin-right: 0;
margin-right: 13.6em;
border-left: 0;
border-right: 1px solid #fabd23;
-}
-* html #column-content {
+}
+* html #column-content {
float: none;
margin-left: 0;
margin-right: 0;
.texty h2{text-align: center; text-transform: uppercase; color: maroon; font-size: 20px; padding: 0; margin: 0}
-
+
#OpenLayers.Control.Attribution_3{background-color: black;}
.middlebox{background-color: #ddd !important;}
- #tab-projects #content li{font-size: 18px !important; line-height: 26px;}
+ #tab-projects #content li{font-size: 18px !important; line-height: 26px;}
}
h3 {
- font-size: 20px;
+ font-size: 20px;
}
-
+
.lp-banner {
box-shadow: 0px 1px 5px rgba(255, 255, 255, 0.7);
margin-bottom: 20px;
.fsf-donate-button {
- margin-left: 24%;
+ margin-left: 24%;
margin-top: 5px;
margin-bottom: 10px;
width:56%;
-}
+}
@media (max-width:768px) {
.fsf-donate-button {
margin-top: 5px;
margin-bottom: 10px;
width:22%;
- }
+ }
}
@media (min-width:320px) and (max-width:360px) {
<glyph unicode="🔥" d="M400 755q2 -12 8 -41.5t8 -43t6 -39.5t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85t5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5 q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129 q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5z" />
<glyph unicode="🔧" d="M948 778l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
$('#crm-container #mainTabContainer.narrowpage #contactTopBar tr.added').detach();
}
var cformwidth = $('#crm-container #Contact .contact_basic_information-section').width();
-
+
if (cformwidth < 720) {
$('#crm-container .contact_basic_information-section').addClass('narrowform');
$('#crm-container .contact_basic_information-section table.form-layout-compressed td .helpicon').parent().addClass('hashelpicon');
*/
;(function($) {
-
+
$.fn.extend({
autocomplete: function(urlOrData, options) {
var isUrl = typeof urlOrData == "string";
delay: isUrl ? $.Autocompleter.defaults.delay : 10,
max: options && !options.scroll ? 10 : 150
}, options);
-
+
// if highlight is set to false, replace it with a do-nothing function
options.highlight = options.highlight || function(value) { return value; };
-
+
// if the formatMatch option is not specified, then use formatItem for backwards compatibility
options.formatMatch = options.formatMatch || options.formatItem;
-
+
return this.each(function() {
new $.Autocompleter(this, options);
});
mouseDownOnSelect: false
};
var select = $.Autocompleter.Select(options, input, selectCurrent, config);
-
+
var blockSubmit;
-
+
// prevent form submit in opera when selecting with return key
$.browser.opera && $(input.form).bind("submit.autocomplete", function() {
if (blockSubmit) {
return false;
}
});
-
+
// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
// track last key pressed
lastKeyPressCode = event.keyCode;
switch(event.keyCode) {
-
+
case KEY.UP:
event.preventDefault();
if ( select.visible() ) {
onChange(0, true);
}
break;
-
+
case KEY.DOWN:
event.preventDefault();
if ( select.visible() ) {
onChange(0, true);
}
break;
-
+
case KEY.PAGEUP:
event.preventDefault();
if ( select.visible() ) {
onChange(0, true);
}
break;
-
+
case KEY.PAGEDOWN:
event.preventDefault();
if ( select.visible() ) {
onChange(0, true);
}
break;
-
+
// matches also semicolon
case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
case KEY.TAB:
return false;
}
break;
-
+
case KEY.ESC:
select.hide();
break;
-
+
default:
clearTimeout(timeout);
timeout = setTimeout(onChange, options.delay);
$input.unbind();
$(input.form).unbind(".autocomplete");
}).bind("input", function() {
- // needed for chinese input? see CRM-6135 and http://plugins.jquery.com/node/14682
- // this breaks "delay" though, so lets only use it with chinese minChars setting
- if (options.minChars <= 1) {
- onChange(0, true);
- }
+ // needed for chinese input? see CRM-6135 and http://plugins.jquery.com/node/14682
+ // this breaks "delay" though, so lets only use it with chinese minChars setting
+ if (options.minChars <= 1) {
+ onChange(0, true);
+ }
});
-
+
function selectCurrent() {
var selected = select.selected();
if( !selected )
return false;
-
+
var v = selected.result;
previousValue = v;
-
+
if ( options.multiple ) {
var words = trimWords($input.val());
if ( words.length > 1 ) {
}
v += options.multipleSeparator;
}
-
+
$input.val(v);
hideResultsNow();
$input.trigger("result", [selected.data, selected.value]);
return true;
}
-
+
function onChange(crap, skipPrevCheck) {
if( lastKeyPressCode == KEY.DEL ) {
select.hide();
return;
}
-
+
var currentValue = $input.val();
-
+
if ( !skipPrevCheck && currentValue == previousValue )
return;
-
+
previousValue = currentValue;
-
+
currentValue = lastWord(currentValue);
if ( currentValue.length >= options.minChars) {
$input.addClass(options.loadingClass);
select.hide();
}
};
-
+
function trimWords(value) {
if ( !value ) {
return [""];
});
return result;
}
-
+
function lastWord(value) {
if ( !options.multiple )
return value;
var words = trimWords(value);
return words[words.length - 1];
}
-
+
// fills in the input box w/the first match (assumed to be the best match)
// q: the term entered
// sValue: the first matching result
success(term, data);
// if an AJAX url has been supplied, try loading the data now
} else if( (typeof options.url == "string") && (options.url.length > 0) ){
-
+
var extraParams = {
timestamp: +new Date()
};
$.each(options.extraParams, function(key, param) {
extraParams[key] = typeof param == "function" ? param() : param;
});
-
+
$.ajax({
// try to leverage ajaxQueue plugin to abort previous requests
mode: "abort",
failure(term);
}
};
-
+
function parse(data) {
var parsed = [];
var rows = data.split("\n");
var data = {};
var length = 0;
-
+
function matchSubset(s, sub) {
- if (!options.matchCase)
+ if (!options.matchCase)
s = s.toLowerCase();
var i = s.indexOf(sub);
if (i == -1) return false;
return i == 0 || options.matchContains;
};
-
+
function add(q, value) {
if (length > options.cacheLength){
flush();
}
- if (!data[q]){
+ if (!data[q]){
length++;
}
data[q] = value;
}
-
+
function populate(){
if( !options.data ) return false;
// track the matches
// no url was specified, we need to adjust the cache length to make sure it fits the local data store
if( !options.url ) options.cacheLength = 1;
-
+
// track all options for minChars = 0
stMatchSets[""] = [];
-
+
// loop through the array and create a lookup structure
for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
var rawValue = options.data[i];
// if rawValue is a string, make an array otherwise just reference the array
rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
-
+
var value = options.formatMatch(rawValue, i+1, options.data.length);
if ( value === false )
continue;
-
+
var firstChar = value.charAt(0).toLowerCase();
// if no lookup array for this character exists, look it up now
- if( !stMatchSets[firstChar] )
+ if( !stMatchSets[firstChar] )
stMatchSets[firstChar] = [];
// if the match is a string
data: rawValue,
result: options.formatResult && options.formatResult(rawValue) || value
};
-
+
// push the current match into the set list
stMatchSets[firstChar].push(row);
add(i, value);
});
}
-
+
// populate any existing data
setTimeout(populate, 25);
-
+
function flush(){
data = {};
length = 0;
}
-
+
return {
flush: flush,
add: add,
load: function(q) {
if (!options.cacheLength || !length)
return null;
- /*
+ /*
* if dealing w/local data and matchContains than we must make sure
* to loop through all the data collections looking for matches
*/
}
});
}
- }
+ }
return csub;
- } else
+ } else
// if the exact item exists, use it
if (data[q]){
return data[q];
var CLASSES = {
ACTIVE: "ac_over"
};
-
+
var listItems,
active = -1,
data,
needsInit = true,
element,
list;
-
+
// Create results
function init() {
if (!needsInit)
.addClass(options.resultsClass)
.css("position", "absolute")
.appendTo(document.body);
-
+
innerElement = $("<div/>")
.addClass('ac_results-inner')
.appendTo(element);
-
+
list = $("<ul/>").appendTo(innerElement).mouseover( function(event) {
if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
- $(target(event)).addClass(CLASSES.ACTIVE);
+ $(target(event)).addClass(CLASSES.ACTIVE);
}
}).click(function(event) {
$(target(event)).addClass(CLASSES.ACTIVE);
}).mouseup(function() {
config.mouseDownOnSelect = false;
});
-
+
if( options.width > 0 )
element.css("width", options.width);
-
+
needsInit = false;
- }
-
+ }
+
function target(event) {
var element = event.target;
while(element && element.tagName != "LI")
}
}
};
-
+
function movePosition(step) {
active += step;
if (active < 0) {
active = 0;
}
}
-
+
function limitNumberOfItems(available) {
return options.max && options.max < available
? options.max
: available;
}
-
+
function fillList() {
list.empty();
var max = limitNumberOfItems(data.length);
if ( $.fn.bgiframe )
list.bgiframe();
}
-
+
return {
display: function(d, q) {
init();
maxHeight: options.scrollHeight,
overflow: 'auto'
});
-
+
if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
var listHeight = 0;
listItems.each(function() {
listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
}
}
-
+
}
},
selected: function() {
s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
if ( opts.title ) {
s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || ' ')+'</div>';
- }
+ }
s += '<div class="ui-widget-content ui-dialog-content"></div>';
s += '</div>';
}
/*
* Alternate Select Multiple (asmSelect) 1.0.4a beta - jQuery Plugin
* http://www.ryancramer.com/projects/asmselect/
- *
+ *
* Copyright (c) 2009 by Ryan Cramer - http://www.ryancramer.com
- *
+ *
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
listType: 'ul', // Ordered list 'ol', or unordered list 'ul'
sortable: false, // Should the list be sortable?
- highlight: false, // Use the highlight feature?
+ highlight: false, // Use the highlight feature?
animate: false, // Animate the the adding/removing of items in the list?
addItemTarget: 'bottom', // Where to place new selected items in list: top or bottom
hideWhenAdded: false, // Hide the option when added to the list? works only in FF
- debugMode: false, // Debug mode keeps original select visible
+ debugMode: false, // Debug mode keeps original select visible
removeLabel: 'X', // Text used in the "remove" link
highlightAddedLabel: 'Added: ', // Text that precedes highlight of added item
respectParents: false // Force selection of "parent" option items
};
- $.extend(options, customOptions);
+ $.extend(options, customOptions);
return this.each(function(index) {
// initialize the alternate select multiple
// this loop ensures uniqueness, in case of existing crmasmSelects placed by ajax (1.0.3)
- while($("#" + options.containerClass + index).size() > 0) index++;
+ while($("#" + options.containerClass + index).size() > 0) index++;
$select = $("<select></select>")
.addClass(options.selectClass)
.attr('name', options.selectClass + index)
- .attr('id', options.selectClass + index);
+ .attr('id', options.selectClass + index);
- $selectRemoved = $("<select></select>");
+ $selectRemoved = $("<select></select>");
$ol = $("<" + options.listType + "></" + options.listType + ">")
.addClass(options.listClass)
- .attr('id', options.listClass + index);
+ .attr('id', options.listClass + index);
$container = $("<div></div>")
- .addClass(options.containerClass)
- .attr('id', options.containerClass + index);
+ .addClass(options.containerClass)
+ .attr('id', options.containerClass + index);
buildSelect();
$select.change(selectChangeEvent)
- .click(selectClickEvent);
+ .click(selectClickEvent);
$original.change(originalChangeEvent)
.wrap($container).before($select).before($ol);
$(this).children("li").each(function(n) {
- $option = $('#' + $(this).attr('rel'));
+ $option = $('#' + $(this).attr('rel'));
if($(this).is(".ui-sortable-helper")) {
- updatedOptionId = $option.attr('id');
+ updatedOptionId = $option.attr('id');
return;
}
- $original.append($option);
- });
+ $original.append($option);
+ });
- if(updatedOptionId) triggerOriginalChange(updatedOptionId, 'sort');
+ if(updatedOptionId) triggerOriginalChange(updatedOptionId, 'sort');
}
- }).addClass(options.listSortableClass);
+ }).addClass(options.listSortableClass);
}
function selectChangeEvent(e) {
-
+
// an item has been selected on the regular select we created
// check to make sure it's not an IE screwup, and add it to the list
if($.browser.msie && $.browser.version < 7 && !ieClick) return;
- var id = $(this).children("option:selected").slice(0,1).attr('rel');
- addListItem(id);
- ieClick = false;
+ var id = $(this).children("option:selected").slice(0,1).attr('rel');
+ addListItem(id);
+ ieClick = false;
triggerOriginalChange(id, 'add'); // for use by user-defined callbacks
}
// making sure a click preceded the change() event reduces the chance
// if unintended items being added. there may be a better solution?
- ieClick = true;
+ ieClick = true;
}
function originalChangeEvent(e) {
// on the original <select multiple>, so rebuild ours
if(ignoreOriginalChangeEvent) {
- ignoreOriginalChangeEvent = false;
- return;
+ ignoreOriginalChangeEvent = false;
+ return;
}
$select.empty();
// build or rebuild the new select that the user
// will select items from
- buildingSelect = true;
+ buildingSelect = true;
// add a first option to be the home option / default selectLabel
- $select.prepend("<option>" + $original.attr('title') + "</option>");
+ $select.prepend("<option>" + $original.attr('title') + "</option>");
$original.children("option").each(function(n) {
- var $t = $(this);
- var id;
+ var $t = $(this);
+ var id;
- if(!$t.attr('id')) $t.attr('id', 'asm' + index + 'option' + n);
+ if(!$t.attr('id')) $t.attr('id', 'asm' + index + 'option' + n);
id = $t.attr('id');
- classes = $t.attr('class');
+ classes = $t.attr('class');
if($t.is(":selected")) {
- addListItem(id);
- addSelectOption(id, classes, true);
+ addListItem(id);
+ addSelectOption(id, classes, true);
} else {
- addSelectOption(id,classes);
+ addSelectOption(id,classes);
}
});
if(!options.debugMode) $original.hide(); // IE6 requires this on every buildSelect()
selectFirstItem();
- buildingSelect = false;
+ buildingSelect = false;
}
function addSelectOption(optionId, optionClasses, disabled) {
// add an <option> to the <select>
// used only by buildSelect()
- if(disabled == undefined) var disabled = false;
+ if(disabled == undefined) var disabled = false;
- var $O = $('#' + optionId);
+ var $O = $('#' + optionId);
var $option = $("<option>" + $O.text() + "</option>")
.val($O.val())
.attr('rel', optionId)
.addClass(optionClasses);
- if(disabled) disableSelectOption($option);
+ if(disabled) disableSelectOption($option);
- $select.append($option);
+ $select.append($option);
}
function selectFirstItem() {
// select the firm item from the regular select that we created
- $select.children(":eq(0)").attr("selected", true);
+ $select.children(":eq(0)").attr("selected", true);
}
function disableSelectOption($option) {
// add a new item to the html list
- var $O = $('#' + optionId);
+ var $O = $('#' + optionId);
if(!$O) return; // this is the first item, selectLabel
.attr("href", "#")
.addClass(options.removeClass)
.prepend(options.removeLabel)
- .click(function() {
- dropListItem($(this).parent('li').attr('rel'));
- return false;
- });
+ .click(function() {
+ dropListItem($(this).parent('li').attr('rel'));
+ return false;
+ });
var $itemLabel = $("<span></span>")
.addClass(options.listItemLabelClass)
- .html($O.html());
+ .html($O.html());
var $item = $("<li></li>")
.attr('rel', optionId)
if(!buildingSelect) {
if($O.is(":selected")) return; // already have it
- $O.attr('selected', true);
+ $O.attr('selected', true);
}
if(options.addItemTarget == 'top' && !buildingSelect) {
- $ol.prepend($item);
- if(options.sortable) $original.prepend($O);
+ $ol.prepend($item);
+ if(options.sortable) $original.prepend($O);
} else {
- $ol.append($item);
- if(options.sortable) $original.append($O);
+ $ol.append($item);
+ if(options.sortable) $original.append($O);
}
- addListItemShow($item);
+ addListItemShow($item);
disableSelectOption($("[rel=" + optionId + "]", $select));
if(!buildingSelect) {
- setHighlight($item, options.highlightAddedLabel);
+ setHighlight($item, options.highlightAddedLabel);
selectFirstItem();
- if(options.sortable) $ol.sortable("refresh");
+ if(options.sortable) $ol.sortable("refresh");
}
-
+
if(options.respectParents) {
-
+
if($O.hasClass('child')) {
parentName = $O.attr('class').split('parent-')[1];
parentName = parentName.split(' ')[0];
$item.animate({
opacity: "show",
height: "show"
- }, 100, "swing", function() {
+ }, 100, "swing", function() {
$item.animate({
height: "+=2px"
}, 50, "swing", function() {
$item.animate({
height: "-=2px"
- }, 25, "swing");
- });
- });
+ }, 25, "swing");
+ });
+ });
} else {
$item.show();
}
// remove an item from the html list
- if(highlightItem == undefined) var highlightItem = true;
- var $O = $('#' + optionId);
+ if(highlightItem == undefined) var highlightItem = true;
+ var $O = $('#' + optionId);
- $O.attr('selected', false);
+ $O.attr('selected', false);
$item = $ol.children("li[rel=" + optionId + "]");
- dropListItemHide($item);
+ dropListItemHide($item);
enableSelectOption($("[rel=" + optionId + "]", options.removeWhenAdded ? $selectRemoved : $select));
- if(highlightItem) setHighlight($item, options.highlightRemovedLabel);
+ if(highlightItem) setHighlight($item, options.highlightRemovedLabel);
+
+ triggerOriginalChange(optionId, 'drop');
- triggerOriginalChange(optionId, 'drop');
-
}
function dropListItemHide($item) {
}, 50, "swing", function() {
$prevItem.animate({
height: "+=2px"
- }, 100, "swing");
- });
- $item.remove();
- });
-
+ }, 100, "swing");
+ });
+ $item.remove();
+ });
+
} else {
- $item.remove();
+ $item.remove();
}
}
// directly after the <select> single
// fade it in quickly, then fade it out
- if(!options.highlight) return;
+ if(!options.highlight) return;
$select.next("#" + options.highlightClass + index).remove();
.hide()
.addClass(options.highlightClass)
.attr('id', options.highlightClass + index)
- .html(label + $item.children("." + options.listItemLabelClass).slice(0,1).text());
-
- $select.after($highlight);
+ .html(label + $item.children("." + options.listItemLabelClass).slice(0,1).text());
+
+ $select.after($highlight);
$highlight.fadeIn("fast", function() {
- setTimeout(function() { $highlight.fadeOut("slow"); }, 50);
- });
+ setTimeout(function() { $highlight.fadeOut("slow"); }, 50);
+ });
}
function triggerOriginalChange(optionId, type) {
// trigger a change event on the original select multiple
// so that other scripts can pick them up
- ignoreOriginalChangeEvent = true;
- $option = $("#" + optionId);
+ ignoreOriginalChangeEvent = true;
+ $option = $("#" + optionId);
$original.trigger('change', [{
'option': $option,
'id': optionId,
'item': $ol.children("[rel=" + optionId + "]"),
'type': type
- }]);
+ }]);
}
init();
});
};
-})(jQuery);
+})(jQuery);
*
*
* This offers two features:
-* - crmEditable() edit in place of a single field
+* - crmEditable() edit in place of a single field
* (mostly a wrapper that binds jeditable features with the ajax api and replies on crm-entity crmf-{field} html conventions)
* if you want to add an edit in place on a template:
* - add a class crm-entity and id {EntityName}-{Entityid} higher in the dom
* - add data-action=create if you need to specify the api action to call (default setvalue)
* crmf- stands for crm field
* - crmForm()
-* this embed a civicrm form and make it in place (load+ajaxForm)
+* this embed a civicrm form and make it in place (load+ajaxForm)
* to make it easier to customize the form (eg. hide a button...) it triggers a 'load' event on the form. you can then catch the load on your code (using the $('#id_of_the_form').on(function(){//do something
*/
// param in : a dom object that contains the field name as a class crmf-xxx
var getFieldName = function (field) {
if ($(field).data('field')) {
- return $(field).data('field');
- }
+ return $(field).data('field');
+ }
var fieldName=field.className.match(/crmf-(\S*)/)[1];
if (!fieldName) {
console && console.log && console.log("Couldn't get the crm-editable field name to modify. You need to set crmf-{field_name} or data-{field_name}");
if (!getEntityID (this,function (e,id) {
entity=e;
params.id = id;
-
+
})) { return };
params['field']=getFieldName(this);
return this.each(function() {
var $i = $(this);
var fieldName = "";
-
+
if (this.nodeName == "INPUT" && this.type=="checkbox") {
checkable.call(this,this);
return;
,success: function (result) {
if ($i.hasClass('crm-dialog')) {
$('.ui-dialog').dialog('close').remove();
- } else
+ } else
$i.next().slideUp().remove();
$i.trigger('success',result);
}
var id= $i.closest('.crm-entity').attr('id');
if (id) {
var e=id.match(/(\S*)-(\S*)/);
- if (!e)
+ if (!e)
console && console.log && console.log("Couldn't get the entity id. You need to set class='crm-entity' id='{entityName}-{id}'");
formSettings.entity=e[1];
formSettings.id=e[2];
- }
+ }
if ($i.hasClass('crm-dialog')) {
$i.click (function () {
var $n=$('<div>Loading</div>').appendTo('body');
$n.dialog ({modal:true,width:500});
$n.crmForm (formSettings);
- return false;
+ return false;
});
} else {
$i.click (function () {
return false;
};
$n.crmForm (formSettings);
- return false;
+ return false;
});
}
return;
$this.html("<div class='crm-editable-saving'>Saving...</div>");
return true;
},
- success:function(response) {
+ success:function(response) {
if (response.indexOf('crm-error') >= 0) { // we got an error, re-display the page
$this.html(response);
formLoaded(target);
settings.success(response);
}
}
- }).append('<input type="hidden" name="snippet" value="1"/>'+destination).trigger('load');
+ }).append('<input type="hidden" name="snippet" value="1"/>'+destination).trigger('load');
settings.load(target);
};
* Version: 1.8.2
* Author: Allan Jardine (www.sprymedia.co.uk)
* Info: www.datatables.net
- *
+ *
* Copyright 2008-2011 Allan Jardine, all rights reserved.
*
* This source file is free software, under either the GPL v2 license or a
* BSD style license, as supplied with this software.
- *
- * This source file is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ *
+ * This source file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
*/
(function(i,za,p){i.fn.dataTableSettings=[];var D=i.fn.dataTableSettings;i.fn.dataTableExt={};var n=i.fn.dataTableExt;n.sVersion="1.8.2";n.sErrMode="alert";n.iApiIndex=0;n.oApi={};n.afnFiltering=[];n.aoFeatures=[];n.ofnSearch={};n.afnSortData=[];n.oStdClasses={sPagePrevEnabled:"paginate_enabled_previous",sPagePrevDisabled:"paginate_disabled_previous",sPageNextEnabled:"paginate_enabled_next",sPageNextDisabled:"paginate_disabled_next",sPageJUINext:"",sPageJUIPrev:"",sPageButton:"paginate_button",sPageButtonActive:"paginate_active",
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
$('table thead.sticky').each(function () {
// Make all absolute positioned elements relative to the table.
var height = $(this).parent('table').css('position', 'relative').height();
-
+
// Find all header cells.
$('th', this).each(function () {
-
+
// Ensure each cell has an element in it.
var html = $(this).html();
if (html == ' ') {
if ($(this).children().size() == 0) {
html = '<span>'+ html +'</span>';
}
-
+
// Clone and wrap cell contents in sticky wrapper that overlaps the cell's padding.
$('<div class="sticky-header" style="position: fixed; display: none; top: 0px;">'+ html +'</div>').prependTo(this);
var div = $('div.sticky-header', this).css({
'paddingBottom': $(this).css('paddingBottom')
})[0];
// Adjust width to fit cell and hide.
-
+
//CRM-6467
var length = $(this).width() - $(div).width();
if ( length < 0 ) length = $(div).width() - $(this).width();
$(div).css('paddingRight', parseInt($(div).css('paddingRight')) + length +'px');
cells.push(div);
-
+
// Get position.
div.cell = this;
div.table = $(this).parent('table')[0];
}
});
}
-
+
this.getTokens = function() {
return saved_tokens;
}
function highlight_term(value, term) {
return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<b>$1</b>");
}
-
+
function find_value_and_highlight_term(template, value, term) {
return template.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + value + ")(?![^<>]*>)(?![^&;]+;)", "g"), highlight_term(value, term));
}
$.each(results, function(index, value) {
var this_li = settings.resultsFormatter(value);
-
- this_li = find_value_and_highlight_term(this_li ,value[settings.propertyToSearch], query);
-
+
+ this_li = find_value_and_highlight_term(this_li ,value[settings.propertyToSearch], query);
+
this_li = $(this_li).appendTo(dropdown_ul);
-
+
if(index % 2) {
this_li.addClass(settings.classes.dropdownItem);
} else {
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
<glyph unicode="" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
- /*
- @licstart The following is the entire license notice for the
+ /*
+ @licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (C) 2014 Loic J. Duros
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
- through which recipients can access the Corresponding Source.
+ through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
initialize: function() {
this.view = new _kiwi.view.NetworkTabs({model: this});
-
+
this.on('add', this.onNetworkAdd, this);
this.on('remove', this.onNetworkRemove, this);
canvas_width = canvas.width,
canvas_height = canvas.height;
- // Different letter spacing for MacOS
+ // Different letter spacing for MacOS
if (navigator.appVersion.indexOf("Mac") !== -1) {
letter_spacing = -1.5;
}
var canvas = document.createElement('canvas');
canvas.width = 16;
canvas.height = 16;
-
+
this.canvas = canvas;
},
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
-
+
];
app.controller = function() {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
https is available for any of them!
</div>
-
-
+
+
<div class="panel-heading">
<h3 class="panel-title">Support the FSF!</h3>
<li class="item">
<img src="//static.fsf.org/nosvn/libreplanet/2014/site/carousel/gnu30_hackers.jpg"
- alt="[ Apply for a scholarship ]">
+ alt="[ Apply for a scholarship ]">
<p class="carousel-caption-bottom"><a href="https://www.libreplanet.org/2016/scholarship_donation">Donate to the scholarship fund</a> to help us bring new people to LibrePlanet.
</p>
</li>
<td><a href="/2016/assets/js/lodash.js">load.js</a></td>
</tr>
-
+
<tr>
<td><a href="/2016/assets/js/engine.io.bundle.min.js">engine.io.bundle.min.js</a></td>
<td><a href="http://www.gnu.org/licenses/agpl-3.0.html">GNU Affero General Public License version 3</a></td>
<td><a href="/2016/assets/js/engine.io.bundle.js">engine.io.bundle.js</a></td>
</tr>
-
+
<tr>
<td><a href="/2016/assets/js/kiwi.min.js">kiwi.min.js</a></td>
<td><a href="http://www.gnu.org/licenses/agpl-3.0.html">GNU Affero General Public License version 3</a></td>
<td><a href="/2016/assets/js/kiwi.js">kiwi.js</a></td>
</tr>
-
+
<tr>
<td><a href="/2016/assets/js/jquery-1.11.3.min.js">jquery-1.11.3.min.js</a></td>
<td><a href="http://www.jclark.com/xml/copying.txt">Expat</a></td>
"Zak Rogoff": "rogoff",
"Guillaume Roguez": "roguez",
"Enrique Rosas": "rosas",
- "Leah Rowe": "rowe",
+ "Leah Rowe": "rowe",
"Felipe Correa da Silva Sanches": "sanches",
"Eric Schultz": "schultz",
"Andrew Seeder": "seeder",
[
- "Donald Robertson",
- "Donald Robertson",
+ "Donald Robertson",
+ "Donald Robertson",
"Kat Walsh"
]
\ No newline at end of file
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
</hgroup>
</header>
<p><em>The set of programmers: How math restricts us</em></p>
-<p>Carol Smith is a director of the Open Source Initiative. She has worked as
-an Education Partnership Program Manager at GitHub. Before GitHub, she
-managed the Google Summer of Code program for 6 years and worked at
-Google for over 10 years. She has a degree in Journalism from
-California State University, Northridge, and is a cook,
+<p>Carol Smith is a director of the Open Source Initiative. She has worked as
+an Education Partnership Program Manager at GitHub. Before GitHub, she
+managed the Google Summer of Code program for 6 years and worked at
+Google for over 10 years. She has a degree in Journalism from
+California State University, Northridge, and is a cook,
cyclist, and horseback rider.</p>
</div> <!-- speaker-44 content column end -->
</div> <!-- speaker-44 row end -->
{
- "Cory Doctorow": "doctorow",
- "Kade Crockford": "crockford",
- "Sumana Harihareswara": "harihareswara",
- "Richard Stallman": "stallman",
- "Ifeoma Ajunwa": "ajunwa",
- "Tom Callaway": "callaway",
- "Al Carter": "carter",
- "Vagrant Cascadian": "cascadian",
- "Pamela Chestek": "chestek",
- "Geoff A. Cohen": "cohen",
- "Marianne Corvellec": "corvellec",
- "Remy DeCausemaker": "decausemaker",
- "Luke Demarest": "demarest",
- "Máirín Duffy": "duffy",
- "Nick Doiron": "doiron",
- "Cecilia Donnelly": "donnelly",
- "Skye Elijah": "elijah",
- "Christian Fernandez": "fernandez",
- "Mike Gerwitz": "gerwitz",
- "Denver Gingerich": "gingerich",
- "Shauna Gordon-McKeon": "gordon-mckeon",
- "Ben Green": "green",
- "Wm Salt Hale": "hale",
- "Gordon Hall": "hall",
- "Zeeshan Hasan": "hasan",
- "Tiberius Hefflin": "hefflin",
- "Joey Hess": "hess",
- "Chris Hofstader": "hofstader",
- "Helen Jiang": "jiang",
- "Alex Jordan": "jordan",
- "Rabimba Karanjai": "karanjai",
- "Spencer Krum": "krum",
- "Bradley Kuhn": "kuhn",
- "Bassam Kurdali": "kurdali",
- "Ximin Luo": "luo",
- "Tom Marble": "marble",
- "Micky Metts": "metts",
- "Eben Moglen": "moglen",
- "Deborah Nicholson": "nicholson",
- "Alexandre Oliva": "oliva",
- "Andrew Oram": "oram",
- "Conor Schaefer": "schaefer",
- "Michael Scherer": "scherer",
- "Eric Schultz": "schultz",
- "Andrew Seeder": "seeder",
- "Mustafa Shameem": "shameem",
- "Brett Smith": "smith",
- "Carol Smith": "carol_smith",
- "Noah Swartz": "swartz",
- "Robinson Tryon": "tryon",
- "Christopher Webber": "webber",
- "Valerie Young": "young",
+ "Cory Doctorow": "doctorow",
+ "Kade Crockford": "crockford",
+ "Sumana Harihareswara": "harihareswara",
+ "Richard Stallman": "stallman",
+ "Ifeoma Ajunwa": "ajunwa",
+ "Tom Callaway": "callaway",
+ "Al Carter": "carter",
+ "Vagrant Cascadian": "cascadian",
+ "Pamela Chestek": "chestek",
+ "Geoff A. Cohen": "cohen",
+ "Marianne Corvellec": "corvellec",
+ "Remy DeCausemaker": "decausemaker",
+ "Luke Demarest": "demarest",
+ "Máirín Duffy": "duffy",
+ "Nick Doiron": "doiron",
+ "Cecilia Donnelly": "donnelly",
+ "Skye Elijah": "elijah",
+ "Christian Fernandez": "fernandez",
+ "Mike Gerwitz": "gerwitz",
+ "Denver Gingerich": "gingerich",
+ "Shauna Gordon-McKeon": "gordon-mckeon",
+ "Ben Green": "green",
+ "Wm Salt Hale": "hale",
+ "Gordon Hall": "hall",
+ "Zeeshan Hasan": "hasan",
+ "Tiberius Hefflin": "hefflin",
+ "Joey Hess": "hess",
+ "Chris Hofstader": "hofstader",
+ "Helen Jiang": "jiang",
+ "Alex Jordan": "jordan",
+ "Rabimba Karanjai": "karanjai",
+ "Spencer Krum": "krum",
+ "Bradley Kuhn": "kuhn",
+ "Bassam Kurdali": "kurdali",
+ "Ximin Luo": "luo",
+ "Tom Marble": "marble",
+ "Micky Metts": "metts",
+ "Eben Moglen": "moglen",
+ "Deborah Nicholson": "nicholson",
+ "Alexandre Oliva": "oliva",
+ "Andrew Oram": "oram",
+ "Conor Schaefer": "schaefer",
+ "Michael Scherer": "scherer",
+ "Eric Schultz": "schultz",
+ "Andrew Seeder": "seeder",
+ "Mustafa Shameem": "shameem",
+ "Brett Smith": "smith",
+ "Carol Smith": "carol_smith",
+ "Noah Swartz": "swartz",
+ "Robinson Tryon": "tryon",
+ "Christopher Webber": "webber",
+ "Valerie Young": "young",
"Stefano Zacchiroli": "zacchiroli"
}
\ No newline at end of file
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
<ul class="list-group margin-top">
<li class="list-group-item">
<strong>Recent Updates</strong>
-<ul>
-<li> <a href="https://blog.documentfoundation.org/blog/2018/03/14/libreoffice-certification-fsf-libreplanet/">LibreOffice training available for FSF members</a></li>
+<ul>
+<li> <a href="https://blog.documentfoundation.org/blog/2018/03/14/libreoffice-certification-fsf-libreplanet/">LibreOffice training available for FSF members</a></li>
<li> <a href="https://libreplanet.org/2018/program/">Full schedule online</a></li>
<li> <a href="https://libreplanet.org/2018/social/">Social events and workshops running Friday - Monday</a></li>
<li> <a href="https://www.fsf.org/blogs/community/libreplanet-2018-is-on-the-way-check-out-the-talks-and-register">Full speaker lineup announced!</a></li>
<li><a href="https://www.fsf.org/blogs/community/the-2018-libreplanet-keynotes-are-here-you-wont-want-to-miss-them">Keynote speakers announced: Coleman, Nicholson, Stallman, and Schoen</a></li>
- </ul>
+ </ul>
<!--
Markup of update items:
{
- "D. Joe Anderson": "anderson",
- "Isabela Bagueros": "bagueros",
- "Mad Ball": "ball",
- "Lothar Becker": "becker",
- "Walter Bender": "bender",
- "Liz Barry": "barry",
- "Matt Bernius": "bernius",
- "Wendy Bolm": "bolm",
- "Bob Call": "call",
- "Tom Callaway": "callaway",
- "Shaun Carland": "carland",
- "Sudarshan Chawathe": "chawathe",
- "der.hans": "der.hans",
- "Cecilia Donnelly": "donnelly",
- "Máirín Duffy": "duffy",
- "Luis Falcón": "falcon",
- "Jeremiah Foster": "foster",
- "Nathan Freitas": "freitas",
- "Morgan Gangwere": "gangwere",
- "Mike Gerwitz": "gerwitz",
- "Denver Gingerich": "gingerich",
- "Morane Gruenpeter": "gruenpeter",
- "Madeline Hagen": "hagen",
- "Stephen Jacobs": "jacobs",
- "Marc Jones": "jones",
- "Roan Kattouw": "kattouw",
- "Spencer Krum": "krum",
- "Bradley Kuhn": "kuhn",
- "Bassam Kurdali": "kurdali",
- "Michael Kwet": "kwet",
- "Chris Lamb": "lamb",
- "Morgan Lemmer-Webber": "lemmer-webber",
- "Dana Lewis": "lewis",
- "Gina Likins": "likins",
- "Aaron Luna": "luna",
- "Patrick Masson": "masson",
- "Dr. Michele McColgan": "mccolgan",
- "Nick Mathewson": "mathewson",
- "Neil McGovern": "mcgovern",
- "Micky Metts": "metts",
- "Kristopher Navratil": "navratil",
- "Sean O'Brien": "o'brien",
- "Guillaume Roguez": "roguez",
- "Eric Schultz": "schultz",
- "Brett Smith": "smith",
- "Connor Solver": "solver",
- "Chris Thompson": "thompson",
- "David Thompson": "david_thompson",
- "Kat Thornton": "thornton",
- "Andreas Traczyk": "traczyk",
- "Devin Ulibarri": "ulibarri",
- "Luis Villa": "villa",
- "Mariah Villarreal": "villarreal",
- "Jeffrey Warren": "warren",
- "Christopher Lemmer Webber": "webber",
- "Sharon Woods": "woods",
- "Stefano Zacchiroli": "zacchiroli",
- "Alick Tao Zhao": "zhao",
- "Steph Whited": "whited",
- "Gunnar Wolf": "wolf",
+ "D. Joe Anderson": "anderson",
+ "Isabela Bagueros": "bagueros",
+ "Mad Ball": "ball",
+ "Lothar Becker": "becker",
+ "Walter Bender": "bender",
+ "Liz Barry": "barry",
+ "Matt Bernius": "bernius",
+ "Wendy Bolm": "bolm",
+ "Bob Call": "call",
+ "Tom Callaway": "callaway",
+ "Shaun Carland": "carland",
+ "Sudarshan Chawathe": "chawathe",
+ "der.hans": "der.hans",
+ "Cecilia Donnelly": "donnelly",
+ "Máirín Duffy": "duffy",
+ "Luis Falcón": "falcon",
+ "Jeremiah Foster": "foster",
+ "Nathan Freitas": "freitas",
+ "Morgan Gangwere": "gangwere",
+ "Mike Gerwitz": "gerwitz",
+ "Denver Gingerich": "gingerich",
+ "Morane Gruenpeter": "gruenpeter",
+ "Madeline Hagen": "hagen",
+ "Stephen Jacobs": "jacobs",
+ "Marc Jones": "jones",
+ "Roan Kattouw": "kattouw",
+ "Spencer Krum": "krum",
+ "Bradley Kuhn": "kuhn",
+ "Bassam Kurdali": "kurdali",
+ "Michael Kwet": "kwet",
+ "Chris Lamb": "lamb",
+ "Morgan Lemmer-Webber": "lemmer-webber",
+ "Dana Lewis": "lewis",
+ "Gina Likins": "likins",
+ "Aaron Luna": "luna",
+ "Patrick Masson": "masson",
+ "Dr. Michele McColgan": "mccolgan",
+ "Nick Mathewson": "mathewson",
+ "Neil McGovern": "mcgovern",
+ "Micky Metts": "metts",
+ "Kristopher Navratil": "navratil",
+ "Sean O'Brien": "o'brien",
+ "Guillaume Roguez": "roguez",
+ "Eric Schultz": "schultz",
+ "Brett Smith": "smith",
+ "Connor Solver": "solver",
+ "Chris Thompson": "thompson",
+ "David Thompson": "david_thompson",
+ "Kat Thornton": "thornton",
+ "Andreas Traczyk": "traczyk",
+ "Devin Ulibarri": "ulibarri",
+ "Luis Villa": "villa",
+ "Mariah Villarreal": "villarreal",
+ "Jeffrey Warren": "warren",
+ "Christopher Lemmer Webber": "webber",
+ "Sharon Woods": "woods",
+ "Stefano Zacchiroli": "zacchiroli",
+ "Alick Tao Zhao": "zhao",
+ "Steph Whited": "whited",
+ "Gunnar Wolf": "wolf",
"Marina Zhurakhinskaya": "zhurakhinskaya"
}
\ No newline at end of file
<!-- wrapper for slides -->
<ul class="carousel-inner list-unstyled">
-
+
<li class="item active">
-<a href="https://libreplanet.org/2018/speakers/">
+<a href="https://libreplanet.org/2018/speakers/">
<img src="//static.fsf.org/nosvn/libreplanet/2018/assets/keynote_banner.png"
alt="[A banner image, with the faces of Deb Nicholson, Gabriella Coleman, Richard Stallman, and Seth David Schoen in circles.]">
</a>
- </li>
+ </li>
<!--<li class="item active">
<img src="//static.fsf.org/nosvn/libreplanet/2018/assets/di_dinner-2017.png"
alt="[A photo of a group of individuals (women, non-binary, and other gender minorities) sitting at dinner.]" height="475">
- <p class="carousel-caption-center">
+ <p class="carousel-caption-center">
<a href="https://my.fsf.org/civicrm/contribute/transact?reset=1&id=60">Donate to the scholarship fund</a><br> to help us bring new people to LibrePlanet.
</p>
</li>
<!--
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2014/site/carousel/volunteer_helping.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2014/site/carousel/volunteer_helping.jpg"
alt="[ A presentation at LibrePlanet 2013]">
<p class="carousel-caption-center">
Volunteers keep LibrePlanet spinning <br>(and get great perks as well).<br>
-->
<li class="item">
- <img src="https://static.fsf.org/nosvn/libreplanet/feature-images/sumana-speaking-with-cables.jpg"
+ <img src="https://static.fsf.org/nosvn/libreplanet/feature-images/sumana-speaking-with-cables.jpg"
alt="[ Sumana Harihareswara speaking at a podium at LibrePlanet 2016. Between her and the camera is a table strewn with cables and computer equipment. ]" height="475">
<p class="carousel-caption-center">
Explore a wealth of <a href="https://www.libreplanet.org/2017/program/index.html">session videos and slides</a><br> from LibrePlanet 2017.</p>
<br>Fifth Floor
<br>
Boston, MA 02110
- </p>
+ </p>
</div>
<div class="session">
{
- "Deb Nicholson": "nicholson",
- "Gabriella Coleman": "coleman",
- "Richard Stallman": "stallman",
- "Seth David Schoen": "schoen",
- "Mad Ball": "ball",
- "Liz Barry": "barry",
- "Wendy Bolm": "bolm",
- "Shaun Carland": "carland",
- "Sudarshan Chawathe": "chawathe",
- "Cecilia Donnelly": "donnelly",
- "Máirín Duffy": "duffy",
- "Luis Falcón": "falcon",
- "Tony Fortenberry": "fortenberry",
- "Jeremiah Foster": "foster",
- "Mike Gerwitz": "gerwitz",
- "Denver Gingerich": "gingerich",
- "Morane Gruenpeter": "gruenpeter",
- "der hans": "hans",
- "Mark Jones": "jones",
- "Spencer Krum": "krum",
- "Bassam Kudali": "kudali",
- "Bradley Kuhn": "kuhn",
- "Roan Kattouw": "kattouw",
- "Chris Lamb": "lamb",
- "Morgan Lemmer-Webber": "lemmer-webber",
- "Tom Callaway": "callaway",
- "Stephen Jacobs": "jacobs",
- "D. Joe Anderson": "anderson",
- "Gina Linkins": "linkins",
- "Matt Bernius": "bernius",
- "Aaron Luna": "luna",
- "Alison Marcina": "marcina",
- "Patrick Masson": "masson",
- "Madeline Hagen": "hagen",
- "Dr. Michele McColgan": "mccolgan",
- "Kristopher Kavratil": "kavratil",
- "Neil McGovern": "mcgovern",
- "Micky Metts": "metts",
- "Sean O'Brien": "o'brien",
- "Brett Smith": "smith",
- "Connor Solver": "solver",
- "Noah Swartz": "swartz",
- "Eric Schultz": "schultz",
- "David Thomson": "thomson",
- "Kat Thornton": "thornton",
- "Devin Ulibarri": "ulibarri",
- "Walter Bender": "bender",
- "Italo Vignoli": "vignoli",
- "Luis Villa": "villa",
- "Mariah Villarreal": "villarreal",
- "Jeffrey Warren": "warren",
- "Christopher Lemmer Webber": "webber",
- "Gunnar Wolf": "wolf",
- "Sharon Woods": "woods",
- "Stefano Zacchiroli": "zacchiroli",
- "Alick Tao Zhao": "zhao",
+ "Deb Nicholson": "nicholson",
+ "Gabriella Coleman": "coleman",
+ "Richard Stallman": "stallman",
+ "Seth David Schoen": "schoen",
+ "Mad Ball": "ball",
+ "Liz Barry": "barry",
+ "Wendy Bolm": "bolm",
+ "Shaun Carland": "carland",
+ "Sudarshan Chawathe": "chawathe",
+ "Cecilia Donnelly": "donnelly",
+ "Máirín Duffy": "duffy",
+ "Luis Falcón": "falcon",
+ "Tony Fortenberry": "fortenberry",
+ "Jeremiah Foster": "foster",
+ "Mike Gerwitz": "gerwitz",
+ "Denver Gingerich": "gingerich",
+ "Morane Gruenpeter": "gruenpeter",
+ "der hans": "hans",
+ "Mark Jones": "jones",
+ "Spencer Krum": "krum",
+ "Bassam Kudali": "kudali",
+ "Bradley Kuhn": "kuhn",
+ "Roan Kattouw": "kattouw",
+ "Chris Lamb": "lamb",
+ "Morgan Lemmer-Webber": "lemmer-webber",
+ "Tom Callaway": "callaway",
+ "Stephen Jacobs": "jacobs",
+ "D. Joe Anderson": "anderson",
+ "Gina Linkins": "linkins",
+ "Matt Bernius": "bernius",
+ "Aaron Luna": "luna",
+ "Alison Marcina": "marcina",
+ "Patrick Masson": "masson",
+ "Madeline Hagen": "hagen",
+ "Dr. Michele McColgan": "mccolgan",
+ "Kristopher Kavratil": "kavratil",
+ "Neil McGovern": "mcgovern",
+ "Micky Metts": "metts",
+ "Sean O'Brien": "o'brien",
+ "Brett Smith": "smith",
+ "Connor Solver": "solver",
+ "Noah Swartz": "swartz",
+ "Eric Schultz": "schultz",
+ "David Thomson": "thomson",
+ "Kat Thornton": "thornton",
+ "Devin Ulibarri": "ulibarri",
+ "Walter Bender": "bender",
+ "Italo Vignoli": "vignoli",
+ "Luis Villa": "villa",
+ "Mariah Villarreal": "villarreal",
+ "Jeffrey Warren": "warren",
+ "Christopher Lemmer Webber": "webber",
+ "Gunnar Wolf": "wolf",
+ "Sharon Woods": "woods",
+ "Stefano Zacchiroli": "zacchiroli",
+ "Alick Tao Zhao": "zhao",
"Marina Zhurakhinskaya": "zhurakhinskaya"
}
\ No newline at end of file
<br>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/redhat.png" alt="The Purism logo." height="55%" width="55%">
-
+
</div>
<br>
<br>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/purism.png" alt="The Purism logo." height="45%" width="45%">
-
+
</div>
<br>
<br>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/stickeryou.png" alt="The StickerYou logo." height="40%" width="40%">
-
+
</div>
<br>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/savoir-faire-linux.png" alt="Savoir-faire Linux logo." height="40%" width="40%">
-
+
</div>
<br>
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
<div class="session-desc collapse in" id="day-2-timeslot-3-session-1-collapse">
<p>The foundation for the immense success of free software was our shared
value of enabling and maintaining end user freedom. The licenses we
-developed lowered the barrier between producers and consumers of
+developed lowered the barrier between producers and consumers of
software, and enable everyone to pursue their passions in collaboration
with others. Participating in any of today's diverse wealth of free software
communities can be immensely rewarding... and if we're doing it right, just plain fun!</p>
<!-- wrapper for slides -->
<ul class="carousel-inner list-unstyled">
-
+
<li class="item active">
<a href="https://libreplanet.org/2019/speakers">
<img src="//static.fsf.org/nosvn/libreplanet/2019/assets/keynote_banner.png"
</li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2019/assets/volunteer_helping.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2019/assets/volunteer_helping.jpg"
alt="[ A presentation at LibrePlanet 2013 ]">
<p class="carousel-caption-center">
Volunteers keep LibrePlanet spinning <br>(and get great perks as well).<br>
</li>
<li class="item">
- <img src="https://static.fsf.org/nosvn/libreplanet/2019/assets/Deb_06.jpg"
+ <img src="https://static.fsf.org/nosvn/libreplanet/2019/assets/Deb_06.jpg"
alt="[ Deb Nicholson, wearing a black dress, stands next to Mariah Villarreal, wearing a grey cardigan and LibrePlanet 2018 tshirt. They are both smiling. ]">
<p class="carousel-caption-center">
</li>
<li class="item">
- <img src="https://static.fsf.org/nosvn/libreplanet/2019/assets/teeshirt-banner.png"
+ <img src="https://static.fsf.org/nosvn/libreplanet/2019/assets/teeshirt-banner.png"
alt="[ A purple tshirt with green planets and a small cartoon spaceship. It includes the text "LibrePlanet 2019 Trailblazing free software." ]">
<p class="carousel-caption-center">
<td class="tg-ao2g">18:00</td>
<td class="tg-ao2g" colspan="3"> Closing</td>
</tr>
-
+
</table>
<h1>Sunday</h1>
<h1>Raffle</h1>
-<p>We'll be raffling off fabulous free software prices, thanks to <a href="https://libreplanet.org/2019/sponsors">some of our generous sponsors</a>.
+<p>We'll be raffling off fabulous free software prices, thanks to <a href="https://libreplanet.org/2019/sponsors">some of our generous sponsors</a>.
<p>All attendees get a gratis raffle ticket, FSF members get a second gratis ticket, and everyone can buy more chances to win at the GNU Press table during LibrePlanet, as well as at the Friday open house and Saturday evening social events! Buy one ticket for $2, 3 tickets for $5, one arm's length for $20, cash or credit. FSF staff and board members are not eligible to participate in the raffle.</p>
<li>Subscriptions to <a href="https://jmp.chat/">JMP</a></li>
<li>ChaosKeys from <a href="https://altusmetrum.org/">Altus Metrum, LLC</a></li>
</ul>
-
+
<!--#include virtual="/2019/includes/footer.html"-->
{
- "Deb Nicholson": "nicholson",
- "Gabriella Coleman": "coleman",
- "Richard Stallman": "stallman",
- "Seth David Schoen": "schoen",
- "Mad Ball": "ball",
- "Liz Barry": "barry",
- "Wendy Bolm": "bolm",
- "Shaun Carland": "carland",
- "Sudarshan Chawathe": "chawathe",
- "Cecilia Donnelly": "donnelly",
- "Máirín Duffy": "duffy",
- "Luis Falcón": "falcon",
- "Tony Fortenberry": "fortenberry",
- "Jeremiah Foster": "foster",
- "Mike Gerwitz": "gerwitz",
- "Denver Gingerich": "gingerich",
- "Morane Gruenpeter": "gruenpeter",
- "der hans": "hans",
- "Mark Jones": "jones",
- "Spencer Krum": "krum",
- "Bassam Kudali": "kudali",
- "Bradley Kuhn": "kuhn",
- "Roan Kattouw": "kattouw",
- "Chris Lamb": "lamb",
- "Morgan Lemmer-Webber": "lemmer-webber",
- "Tom Callaway": "callaway",
- "Stephen Jacobs": "jacobs",
- "D. Joe Anderson": "anderson",
- "Gina Linkins": "linkins",
- "Matt Bernius": "bernius",
- "Aaron Luna": "luna",
- "Alison Marcina": "marcina",
- "Patrick Masson": "masson",
- "Madeline Hagen": "hagen",
- "Dr. Michele McColgan": "mccolgan",
- "Kristopher Kavratil": "kavratil",
- "Neil McGovern": "mcgovern",
- "Micky Metts": "metts",
- "Sean O'Brien": "o'brien",
- "Brett Smith": "smith",
- "Connor Solver": "solver",
- "Noah Swartz": "swartz",
- "Eric Schultz": "schultz",
- "David Thomson": "thomson",
- "Kat Thornton": "thornton",
- "Devin Ulibarri": "ulibarri",
- "Walter Bender": "bender",
- "Italo Vignoli": "vignoli",
- "Luis Villa": "villa",
- "Mariah Villarreal": "villarreal",
- "Jeffrey Warren": "warren",
- "Christopher Lemmer Webber": "webber",
- "Gunnar Wolf": "wolf",
- "Sharon Woods": "woods",
- "Stefano Zacchiroli": "zacchiroli",
- "Alick Tao Zhao": "zhao",
+ "Deb Nicholson": "nicholson",
+ "Gabriella Coleman": "coleman",
+ "Richard Stallman": "stallman",
+ "Seth David Schoen": "schoen",
+ "Mad Ball": "ball",
+ "Liz Barry": "barry",
+ "Wendy Bolm": "bolm",
+ "Shaun Carland": "carland",
+ "Sudarshan Chawathe": "chawathe",
+ "Cecilia Donnelly": "donnelly",
+ "Máirín Duffy": "duffy",
+ "Luis Falcón": "falcon",
+ "Tony Fortenberry": "fortenberry",
+ "Jeremiah Foster": "foster",
+ "Mike Gerwitz": "gerwitz",
+ "Denver Gingerich": "gingerich",
+ "Morane Gruenpeter": "gruenpeter",
+ "der hans": "hans",
+ "Mark Jones": "jones",
+ "Spencer Krum": "krum",
+ "Bassam Kudali": "kudali",
+ "Bradley Kuhn": "kuhn",
+ "Roan Kattouw": "kattouw",
+ "Chris Lamb": "lamb",
+ "Morgan Lemmer-Webber": "lemmer-webber",
+ "Tom Callaway": "callaway",
+ "Stephen Jacobs": "jacobs",
+ "D. Joe Anderson": "anderson",
+ "Gina Linkins": "linkins",
+ "Matt Bernius": "bernius",
+ "Aaron Luna": "luna",
+ "Alison Marcina": "marcina",
+ "Patrick Masson": "masson",
+ "Madeline Hagen": "hagen",
+ "Dr. Michele McColgan": "mccolgan",
+ "Kristopher Kavratil": "kavratil",
+ "Neil McGovern": "mcgovern",
+ "Micky Metts": "metts",
+ "Sean O'Brien": "o'brien",
+ "Brett Smith": "smith",
+ "Connor Solver": "solver",
+ "Noah Swartz": "swartz",
+ "Eric Schultz": "schultz",
+ "David Thomson": "thomson",
+ "Kat Thornton": "thornton",
+ "Devin Ulibarri": "ulibarri",
+ "Walter Bender": "bender",
+ "Italo Vignoli": "vignoli",
+ "Luis Villa": "villa",
+ "Mariah Villarreal": "villarreal",
+ "Jeffrey Warren": "warren",
+ "Christopher Lemmer Webber": "webber",
+ "Gunnar Wolf": "wolf",
+ "Sharon Woods": "woods",
+ "Stefano Zacchiroli": "zacchiroli",
+ "Alick Tao Zhao": "zhao",
"Marina Zhurakhinskaya": "zhurakhinskaya"
}
\ No newline at end of file
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/redhat.png" alt="The red hat logo." height="75%" width="75%">
-
+
</div>
<h2>In-kind and raffle sponsors</h2>
<img src="https://static.fsf.org/nosvn/libreplanet/2019/sponsor-logos/Boston_Beer_Company.jpg" alt="Boston Beer Company logo" height="25%" width="30%">
<img src="https://static.fsf.org/nosvn/libreplanet/2019/sponsor-logos/wegmans.svg" alt="Wegman's logo" height="25%" width="30%">
</p>
-
-
+
+
<!-- <div class="hover_img">
<img src="" alt="" height="50%" width="50%">
<p class="text-muted text-center"> <a href=""></a></p>
- </div>
--->
+ </div>
+-->
-<p><em>All non-FSF logos are copyright their owners and used by permission.</em></p>
+<p><em>All non-FSF logos are copyright their owners and used by permission.</em></p>
<h1>Exhibitors</h1>
<ul>
<p>As a 501(c)(3) nonprofit, the Free Software Foundation relies on sponsors and volunteers to make LibrePlanet a reality each year. Thanks to conference sponsors, we can offer free admission to students, travel scholarships, welcoming event space and social activities, and refreshments for attendees. Support from generous sponsors also enables LibrePlanet to run on free software infrastructure, including livestreaming and session recordings.</p>
-<p><a href="LP19-sponsor-prospectus-3.pdf
+<p><a href="LP19-sponsor-prospectus-3.pdf
">Sponsorship and underwriting opportunities can be found in this year's prospectus</a>. Email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a> if you are interested in sponsoring or have any questions.</p>
<b>Exhibit Hall</b>
font-size: 20px;
}
-.lp-logo {
- margin-bottom: -68px;
+.lp-logo {
+ margin-bottom: -68px;
margin-top: 10px;
}
@media (max-width:600px) {
-
+
.talkblock{
clear: both;
text-align: left;
}
.speakerheader {
text-align: left;
-
+
}
.speakerblock h2{
font-size:x-large;
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
<!--#include virtual="/2020/includes/banner.html"-->
<!--#include virtual="/2020/includes/sidebar.html"-->
-##Please check for our confirmation email
+##Please check for our confirmation email
For your protection and to prevent spam, we don't process form
submissions until you click the link in the confirmation email.
<!--#include virtual="/2020/includes/banner.html"-->
<!--#include virtual="/2020/includes/sidebar.html"-->
-## Sorry, the feedback survey is now closed
-
+## Sorry, the feedback survey is now closed
+
[Return to the home page](https://www.libreplanet.org/2020)
-
+
<!--#include virtual="/2020/includes/footer.html"-->
<!--#include virtual="/2020/includes/common_js.html"-->
<!--#include virtual="/2020/includes/banner.html"-->
<!--#include virtual="/2020/includes/sidebar.html"-->
-## One more step!
+## One more step!
Thanks for filling out the survey. To process your answers, we
need you to confirm your email address by clicking the link in
-the confirmation email we've just sent you.
-
+the confirmation email we've just sent you.
+
**Please check your email now for the confirmation link.**
-
+
[Return to the homepage.](https://www.libreplanet.org/2020/)
<!--#include virtual="/2020/includes/footer.html"-->
<a name="workshops"><h2>WORKSHOPS</h2></a>
<h3>SATURDAY 10:40 - 12:10</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><h4>Keysigning</h4></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Justice Room</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><h4>Keysigning</h4></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Justice Room</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
Dave Hunt
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
<p>Increase the reliability of your email encryption key at a
keysigning party Saturday morning while networking with other
free software fans and supporters! We will be hosting a small
to increase your security, sense of mind, and free software cred.</p>
<p><li><strong>Come prepared</strong> Print out your GPG key fingerprint on pieces of paper and bring an official ID. Instructions on how to actually verify someones GPG key are available on site. Read more <a href="https://emailselfdefense.fsf.org/en/">at Email Self Defense.</a></p>
-
+
</div></span> </div> </td>
</tr>
</tbody>
</br>
<h3>SUNDAY 10:40 - 12:10</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#2855"><div id="2855"><h4>Music Blocks workshop</h4></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Justice Room</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#2855"><div id="2855"><h4>Music Blocks workshop</h4></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Justice Room</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/profiles_ulibarri.jpg">
Devin Ulibarri and Walter Bender
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
<li><strong>Sign up:</strong> Place your name on the LibrePlanet wiki <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2020/Workshops">workshop
signup</a> to secure your spot</li>
-
+
</div></span> </div> </td>
</br>
</br>
-<a name="social"><h2>SOCIAL EVENTS</h2></a>
+<a name="social"><h2>SOCIAL EVENTS</h2></a>
<h3>Friday night</h4>
<ul>
<h3>Open House</h3>
<li><strong>Time:</strong> 19:00 - 21:30, Saturday 3/14</li>
<li><strong>Location:</strong> <a href="https://www.fsf.org/about/contact/">FSF Office</a></li>
<li><strong>Signup:</strong> Not necessary</li>
-</ul>
+</ul>
<p>The office is at 51 Franklin Street, Fifth Floor, Boston, MA 02110.</li></p>
</ul>
#### Saturday night
- * *Saturday night party, TIME TBA:* Join us Saturday night after the Free Software Awards to celebrate free software! We will have gratis snacks, and your first drink is on us. A full dinner menu is available for purchase. The venue is accessible, and all ages are welcome! The party venue will be announced shortly!
+ * *Saturday night party, TIME TBA:* Join us Saturday night after the Free Software Awards to celebrate free software! We will have gratis snacks, and your first drink is on us. A full dinner menu is available for purchase. The venue is accessible, and all ages are welcome! The party venue will be announced shortly!
* *Saturday, 19:00-21:30:* Looking for a little quieter social time? The FSF office will be open late for hacking and hanging out. Snacks, non-alcoholic drinks, and power will be provided. This is an alcohol-free event. The office is at 51 Franklin Street, Fifth Floor, Boston, MA 02110.
#### Sunday night
* Sunday, 21:00-23:30:</i> A Cambridge tradition! Rather than an official LibrePlanet event, this is a regular, unofficial gathering. Feel free to join Boston area free software enthusiasts and your new friends at Grendel's Den, located in Harvard Square. 89 Winthrop St, Cambridge, MA.
-###Organize your own social event!
-If you are looking to organize your own dinner or meetup, you can do so using <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2020">the LibrePlanet wiki</a> 2020 conference social and dinner pages as a central place for communication about this.
+###Organize your own social event!
+If you are looking to organize your own dinner or meetup, you can do so using <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2020">the LibrePlanet wiki</a> 2020 conference social and dinner pages as a central place for communication about this.
<!--#include virtual="/2020/includes/footer.html"-->
<!--#include virtual="/2020/includes/common_js.html"-->
<h3>Hostels</h3>
<ul>
- <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Closest)</a> ($)</li>
+ <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Closest)</a> ($)</li>
<li><a href="https://www.foundhotels.com/cities/boston/">Found Hostel</a> ($$)</li>
-
+
<li>Other hostels a little farther out can be found at <a href="https://www.hostelworld.com/search?search_keywords=Boston,%20USA&country=USA&city=Boston&date_from=2020-03-14&date_to=2020-03-15&number_of_guests=1">HostelWorld</a></li>
</ul>
<li><a href="https://www.marriott.com/hotels/travel/bosbo-sheraton-boston-hotel/">The Sheraton</a> - Contemporary hotel (Marriott chain) Located centrally ($$)</li>
<li><a href="https://bostonparkplaza.reztrip.com/classic/en/special_offer?action=show&controller=landings&locale=en&rate_code%5B%5D=SHOSP&rate_code%5B%5D=SHOSP&starting_page=special_offer&vr=3">Boston Park Plaza</a> price varies ($$$)</li>
</ul>
-<p>
+<p>
<h2>Transportation</h2>
<p>The easiest way to get around Boston/Cambridge is to use the <a href="http://www.mbta.com">MBTA</a>. Passes can be purchased with cash or credit/debit cards in stations. </p>
<li>Cabs are located all over the city: at the airport and major subway stations.</li>
<li>The <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=BLUE">Blue Line</a> is a train, with a shuttle bus from Logan Airport to the Airport MBTA stop; the <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=SILVER">Silver Line</a> is an expedited bus. The MBTA website provides a very <a href="http://www.mbta.com/riding_the_t/logan/">helpful page</a> on how to navigate via the Silver Line and Blue Line from the airport.</li>
</ul>
-<p>
+<p>
<h3 id="getting-around"> Getting Around </h3>
<!-- <h4 id="getting-around">Getting to LibrePlanet at the Back Bay Events Center</h4> -->
<!--<p>Our <a href="#map">map</a> is useful for finding your way from the station to the conference.</p>
-->
-<p>
+<p>
<h4 id="getting-around">Getting to the Free Software Foundation office</h4>
<ul>
<ul>
<li>From North of the city, travel via <a href="http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=15583&lat=42.365551&lng=-71.061251">North Station</a> From there, take the Orange Line to <a href="http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=13771">Downtown Crossing</a> to reach the office. </li>
<li>From south of the city, travel via <a href="http://www.mbta.com/schedules_and_maps/rail/lines/stations/?stopId=191">South Station.</a> Take the red line to <a href="https://www.mbta.com/stops/place-dwnxg?from=global-search&query=downtown&facets=stops%2Cfacet-station%2Cfacet-stop"> Downtown Crossing.</a></li>
-</ul>
+</ul>
Directions: Each of these subway stations is only a block away from the FSF. State Street and Government Center are also in easy walking distance.
</ul>
<p>The door is unlocked during the day, so you can just come right on inside to the 5th floor. If the door happens to be locked, call us at +1 617 542 5942.</p>
<p><b>If you have questions about traveling, contact us at <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</b></p>
-
+
</li>
</ul>
- <!--pagestart-->
-
-
-
+ <!--pagestart-->
+
+
+
<div class="view-content">
<h3>Keynote Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3282">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">For us, by us: Free technology, community science, and the pursuit of environmental problem solving</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3282">Sunday 09:45 - 10:30 - Opening Keynote</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<h2>Shannon Dosemagen</h2></div>
<div class="webform-long-answer">Shannon is an environmental health advocate and a community science champion, and is enthusiastic about the potential for free systems and technology to support the creation of a more just and equitable future.<br />\r
<br />\r
-Shannon has spent the last twenty years working with environmental and public health groups to address declining freshwater resources, coastal land loss, and building monitoring programs with communities living adjacent to industrial facilities. During 2020, she will be a Fellow with the Shuttleworth Foundation, working on new concept called the Open Environmental Data Project. Shannon is co-founder and current executive director of Public Lab, an organizer of the Gathering for Open Science Hardware, and previous chair of both the US EPA National Advisory Council on Environmental Policy and Technology, and the Citizen Science Association. She is an Ashoka Fellow, and a senior Fellow of the Environmental Leadership Program. She is a previous Fellow at both the Harvard Berkman Klein Center for Internet and Society, and Loyola University Environmental Communications Institute. Follow her on Twitter @sdosemagen for the latest.</div>
+Shannon has spent the last twenty years working with environmental and public health groups to address declining freshwater resources, coastal land loss, and building monitoring programs with communities living adjacent to industrial facilities. During 2020, she will be a Fellow with the Shuttleworth Foundation, working on new concept called the Open Environmental Data Project. Shannon is co-founder and current executive director of Public Lab, an organizer of the Gathering for Open Science Hardware, and previous chair of both the US EPA National Advisory Council on Environmental Policy and Technology, and the Citizen Science Association. She is an Ashoka Fellow, and a senior Fellow of the Environmental Leadership Program. She is a previous Fellow at both the Harvard Berkman Klein Center for Internet and Society, and Loyola University Environmental Communications Institute. Follow her on Twitter @sdosemagen for the latest.</div>
</div></span> </div> </div>
<div class="views-row views-row-2 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3284">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Locking the Web open: A decentralized web that can operate as free software does</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3284">Sunday 17:15 - 18:00 - Closing Keynote</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Brewster-Kahle.jpeg">
<h2>Brewster Kahle</h2></div>
-<div class="webform-long-answer">Brewster Kahle is a passionate advocate for public Internet access, and a successful entrepreneur, and he has spent his career intent on a singular focus: providing Universal Access to All Knowledge. He is the founder and Digital Librarian of the Internet Archive, one of the largest libraries in the world. Soon after graduating from the Massachusetts Institute of Technology, where he studied artificial intelligence, Kahle helped found the company Thinking Machines, a parallel supercomputer maker. In 1989, Kahle created the Internet's first publishing system, called Wide Area Information Server (WAIS), later selling the company to AOL. In 1996, Kahle co-founded Alexa Internet, which helps catalog the Web, selling it to Amazon.com in 1999. The Internet Archive, which he founded in 1996, now preserves 50 petabytes of data: the books, Web pages, music, television, and software of our cultural heritage, working with more than 600 library and university partners to create a digital library, accessible to all.</div>
+<div class="webform-long-answer">Brewster Kahle is a passionate advocate for public Internet access, and a successful entrepreneur, and he has spent his career intent on a singular focus: providing Universal Access to All Knowledge. He is the founder and Digital Librarian of the Internet Archive, one of the largest libraries in the world. Soon after graduating from the Massachusetts Institute of Technology, where he studied artificial intelligence, Kahle helped found the company Thinking Machines, a parallel supercomputer maker. In 1989, Kahle created the Internet's first publishing system, called Wide Area Information Server (WAIS), later selling the company to AOL. In 1996, Kahle co-founded Alexa Internet, which helps catalog the Web, selling it to Amazon.com in 1999. The Internet Archive, which he founded in 1996, now preserves 50 petabytes of data: the books, Web pages, music, television, and software of our cultural heritage, working with more than 600 library and university partners to create a digital library, accessible to all.</div>
</div></span> </div> </div>
<div class="views-row views-row-3 views-row-odd views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3288">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free the Future Young Hackers Keynote Panel</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3288">Saturday 09:45 - 10:30 - Opening Keynote</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<br />\r
Taowa is a (non-uploading) Debian Developer, sysadmin, and free software enthusiast. His interests are in privacy and security tools (and making these accessible to everyone), as well as amateur radio, networking and electronics. Did we mention he's not old enough to vote yet?<br />\r
<br />\r
-Erin Moon is an engineer, student, musician, and very tired. She's used, contributed to, and developed free software since she was a small kid. Over the last three years, her open source work has focused on federated social media software, as a user, contributor, and maintainer. Her other personal work includes digital signal processing research for musical purposes, ROM hacking, operating system development, and electrical hardware engineering.</div>
+Erin Moon is an engineer, student, musician, and very tired. She's used, contributed to, and developed free software since she was a small kid. Over the last three years, her open source work has focused on federated social media software, as a user, contributor, and maintainer. Her other personal work includes digital signal processing research for musical purposes, ROM hacking, operating system development, and electrical hardware engineering.</div>
</div></span> </div> </div>
<h3>Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3289">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Fediverse: Decentralized Social Networking and Services</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3289">Sunday 14:30 - 15:15</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
Currently a Customer Data Engineer at Object Rocket. Public statements are not representative of $dayjob. <br />\r
<br />\r
Mastodon - https://floss.social/@FLOX_advocate<br />\r
-Plume - https://fediverse.blog/~/LuftHans</div>
+Plume - https://fediverse.blog/~/LuftHans</div>
</div></span> </div> </div>
<div class="views-row views-row-2 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2666">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free software for minorities in Turkey in their own languages</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2666">Sunday 11:35 - 12:20</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
community. Graduated from Law faculty, become a lawyer and applies his<br />\r
technological knowledge to law. Strict online privacy advocate, free<br />\r
software user/advocate, Hackerspace Istanbul (hs.ist) member and very<br />\r
-interested in anything encrypted.</div>
+interested in anything encrypted.</div>
</div></span> </div> </div>
<div class="views-row views-row-3 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2680">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Lessons learned from cultivating free software projects and communities</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2680">Saturday 13:35 - 14:20</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<h2>JJ Asghar</h2></div>
<div class="webform-long-answer">JJ works on the IBM cloud as a developer advocate. He’s focusing on the IBM Kubernetes service, trying to help companies and users have a successful onboarding to the Cloud Native ecosystem.<br />\r
<br />\r
-He lives and grew up in Austin, Texas. He enjoys a good strong stout, a hoppy IPA, and Dwarf Fortress, Rimworld, and Factorio. He’s a member of the Church of Emacs, though he jumps into Vim on remote machines. He usually chooses Ubuntu over CentOS, but secretly wants FreeBSD everywhere. He’s always trying to become a better Ruby developer, but experiments with Go, Python, and only when he has to, Node. A father and husband, if he’s not trying to automate his job away, he’s always trying to convince his daughters to “be button makers, not button pushers.”</div>
+He lives and grew up in Austin, Texas. He enjoys a good strong stout, a hoppy IPA, and Dwarf Fortress, Rimworld, and Factorio. He’s a member of the Church of Emacs, though he jumps into Vim on remote machines. He usually chooses Ubuntu over CentOS, but secretly wants FreeBSD everywhere. He’s always trying to become a better Ruby developer, but experiments with Go, Python, and only when he has to, Node. A father and husband, if he’s not trying to automate his job away, he’s always trying to convince his daughters to “be button makers, not button pushers.”</div>
</div></span> </div> </div>
<div class="views-row views-row-4 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3269">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">How to make more users love free software</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3269">Sunday 13:35 - 14:20</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<br />\r
At this point, Clarissa heard about Outreachy and found a Usability Research project to GNOME. This was the perfect occasion to contribute to a software she has been using for so many years and learn how to improve usability on software products. From December 2018 to March 2019, she worked running usability tests to some important GNOME programs, such as Settings, Notes, Nautilus/ Files, Calendar and Gedit.<br />\r
<br />\r
-After the internship, she wanted to help GNOME with frequent usability tests contributions. To archieve that, she has been working on her undergraduate thesis to find a solution to facilitate to non-technical people to contribute with usability tests. She has also been contributing to GNOME, encouraging people to become contributors and being active on GNOME's Brazilian community. </div>
+After the internship, she wanted to help GNOME with frequent usability tests contributions. To archieve that, she has been working on her undergraduate thesis to find a solution to facilitate to non-technical people to contribute with usability tests. She has also been contributing to GNOME, encouraging people to become contributors and being active on GNOME's Brazilian community. </div>
</div></span> </div> </div>
<div class="views-row views-row-5 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2572">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free software for community radio: LibreTime and other software tools</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2572">Saturday 15:25 - 16:10</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/D3003C9E-85A9-45BC-A451-9C6D4A58A8EC.jpeg">
<h2>Robb Ebright</h2></div>
-<div class="webform-long-answer">Robb Ebright is a longtime free software developer and community media activist. For over ten years, he has helped run WCRS-LP, a community radio station in Columbus, Ohio. He has volunteered as a webmaster for community media projects and activist groups for over twenty years. Currently, he is a full-time parent working on his masters in computer science at Georgia Tech. </div>
+<div class="webform-long-answer">Robb Ebright is a longtime free software developer and community media activist. For over ten years, he has helped run WCRS-LP, a community radio station in Columbus, Ohio. He has volunteered as a webmaster for community media projects and activist groups for over twenty years. Currently, he is a full-time parent working on his masters in computer science at Georgia Tech. </div>
</div></span> </div> </div>
<div class="views-row views-row-6 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2334">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free software and the digital divide</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2334">Sunday 13:35 - 14:20</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<br />\r
For the past five years, he has also been the project lead of Digital Storytelling Toronto, an initiative aimed at increasing digital literacy through storytelling in community and nonprofit organizations. Through this work, he has completed projects with the University of Toronto Scarborough, Brock University, East Scarborough Storefront, Children's Hospital of Eastern Ontario, and Holland Bloorview Kids Rehabilitation Hospital.<br />\r
<br />\r
-Ryan holds an Honours Bachelor of Arts from the University of Toronto, and a Bachelor of Education from the University of Windsor, along with years of experience managing small business IT infrastructure.</div>
+Ryan holds an Honours Bachelor of Arts from the University of Toronto, and a Bachelor of Education from the University of Windsor, along with years of experience managing small business IT infrastructure.</div>
</div></span> </div> </div>
<div class="views-row views-row-7 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2856">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free software enables free science</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2856">Saturday 15:25 - 16:10</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/paulgazz.jpg">
<h2>Paul Gazzillo</h2></div>
-<div class="webform-long-answer">Paul Gazzillo is an assistant professor of computer science at University of Central Florida. His research aims to make it easier to develop safe and secure software, and it spans programming languages, security, software engineering, and systems. Projects include analysis of configurable systems, side-channel attack detection, and concurrent smart contracts.</div>
+<div class="webform-long-answer">Paul Gazzillo is an assistant professor of computer science at University of Central Florida. His research aims to make it easier to develop safe and secure software, and it spans programming languages, security, software engineering, and systems. Projects include analysis of configurable systems, side-channel attack detection, and concurrent smart contracts.</div>
</div></span> </div> </div>
<div class="views-row views-row-8 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2692">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Rented future: The dangerous rise of life as a service</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2692">Saturday 10:40 - 11:25</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/lucy-ingham.jpg">
<h2>Lucy Ingham</h2></div>
-<div class="webform-long-answer">Lucy Ingham is a technology journalist and the editor of the Web site and digital magazine "Verdict." She is the former editor of the futurist site "Factor," and she specializes in exploring how technology is shaping the world we live in. </div>
+<div class="webform-long-answer">Lucy Ingham is a technology journalist and the editor of the Web site and digital magazine "Verdict." She is the former editor of the futurist site "Factor," and she specializes in exploring how technology is shaping the world we live in. </div>
</div></span> </div> </div>
<div class="views-row views-row-9 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2599">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Field notes from a digital rights activist</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2599">Saturday 11:35 - 12:20</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/signal-attachment-2019-10-19-144649.jpeg">
<h2>Giselle Jhunjhnuwala</h2></div>
-<div class="webform-long-answer">Giselle is an artist, self-taught programmer, and Outreachy alumna. They like to explore the intersections of art, science, and technology, and have been exclusively using free software in their practice for several years. They have worked in technology and at an import/export multinational company, which enabled them to travel back and forth between China and the US. They are a member of the Pittsburgh Restore the Fourth chapter, The Big Idea (a collectively run bookstore), and the Stranger Company Art Collective. In their spare time, they volunteer for various free software projects such as Mediawiki, and write songs about PGP. They have exhibited at a number of private and state galleries in China, as well as in the US.</div>
+<div class="webform-long-answer">Giselle is an artist, self-taught programmer, and Outreachy alumna. They like to explore the intersections of art, science, and technology, and have been exclusively using free software in their practice for several years. They have worked in technology and at an import/export multinational company, which enabled them to travel back and forth between China and the US. They are a member of the Pittsburgh Restore the Fourth chapter, The Big Idea (a collectively run bookstore), and the Stranger Company Art Collective. In their spare time, they volunteer for various free software projects such as Mediawiki, and write songs about PGP. They have exhibited at a number of private and state galleries in China, as well as in the US.</div>
</div></span> </div> </div>
<div class="views-row views-row-10 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2528">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Transparent code, secure data: Selling free software to the US Government, our bosses, and ourselves</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2528">Saturday 10:40 - 11:25</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span>
</div>
<br />\r
This talk will be co-presented with Fen Labalme, who loves to create solutions for problems before they arise. His current mission is to empower better government by delivering free software security and compliance solutions that improve upon previous proprietary systems. He’s also working on automating the ATO process, making it easier for agencies to do business securely. He applies over twenty years of IT experience (and a relentless sense of humor) to mentor CivicActions engineers in creating modern, secure systems for clients.<br />\r
<br />\r
-Fen is a Certified Information System Security Professional (CISSP) and a long-time advocate of handling information wisely. His computer science and electrical engineering thesis at MIT presaged the privacy concerns facing today’s Internet and social media platforms. His close-knit family enjoys traveling to historic locations, campaigning for a greener Earth, and playing/cheering at hockey games.</div>
+Fen is a Certified Information System Security Professional (CISSP) and a long-time advocate of handling information wisely. His computer science and electrical engineering thesis at MIT presaged the privacy concerns facing today’s Internet and social media platforms. His close-knit family enjoys traveling to historic locations, campaigning for a greener Earth, and playing/cheering at hockey games.</div>
</div></span> </div> </div>
<div class="views-row views-row-11 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2748">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Preventing the IoT Dystopia with Copyleft</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2748">Saturday 14:30 - 15:15</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/bkuhn-photo-2017.jpg">
<h2>Bradley Kuhn</h2></div>
-<div class="webform-long-answer">Bradley M. Kuhn is the policy fellow and hacker-in-residence at Software Freedom Conservancy, and editor in chief of copyleft.org. Kuhn began his work in the software freedom movement as a volunteer in 1992, and was an early adopter of GNU/Linux systems. Kuhn's nonprofit career began in 2000 at the FSF. As FSF's executive director from 2001-2005, Kuhn led FSF's GPL enforcement, and invented the Affero GPL. Kuhn began as Conservancy's primary volunteer from 2006-2010, and was its first staff person. Kuhn holds a summa cum laude BS in computer science from Loyola University in Maryland, and an MS in computer science from the University of Cincinnati.</div>
+<div class="webform-long-answer">Bradley M. Kuhn is the policy fellow and hacker-in-residence at Software Freedom Conservancy, and editor in chief of copyleft.org. Kuhn began his work in the software freedom movement as a volunteer in 1992, and was an early adopter of GNU/Linux systems. Kuhn's nonprofit career began in 2000 at the FSF. As FSF's executive director from 2001-2005, Kuhn led FSF's GPL enforcement, and invented the Affero GPL. Kuhn began as Conservancy's primary volunteer from 2006-2010, and was its first staff person. Kuhn holds a summa cum laude BS in computer science from Loyola University in Maryland, and an MS in computer science from the University of Cincinnati.</div>
</div></span> </div> </div>
<div class="views-row views-row-12 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2775">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Keeping secrets: What you need to know about encryption</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2775">Saturday 11:35 - 12:20</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/DeeDeeLavinder.png">
<h2>DeeDee Lavinder</h2></div>
-<div class="webform-long-answer">DeeDee Lavinder currently works as a backend engineer, and is a director of Women Who Code Raleigh/Durham. The juxtaposition of analytical thinking and creative problem solving is where she is happiest, and she is particularly thrilled about working in that sweet spot while writing code. When something is hard, she goes deep to understand -- ask her about encoding! When not coding, you can find her listening to audiobooks, driving small people around town, or coordinating something somewhere.</div>
+<div class="webform-long-answer">DeeDee Lavinder currently works as a backend engineer, and is a director of Women Who Code Raleigh/Durham. The juxtaposition of analytical thinking and creative problem solving is where she is happiest, and she is particularly thrilled about working in that sweet spot while writing code. When something is hard, she goes deep to understand -- ask her about encoding! When not coding, you can find her listening to audiobooks, driving small people around town, or coordinating something somewhere.</div>
</div></span> </div> </div>
<div class="views-row views-row-13 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2710">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Secure Scuttlebutt: Peer-to-peer collaboration and community infrastructure</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2710">Sunday 15:25 - 16:10</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/cel.jpg">
<h2>Charles Lehner</h2></div>
-<div class="webform-long-answer">Charles E. Lehner (@cel) is a software developer building collaborative applications on the Secure Scuttlebutt Network.</div>
+<div class="webform-long-answer">Charles E. Lehner (@cel) is a software developer building collaborative applications on the Secure Scuttlebutt Network.</div>
</div></span> </div> </div>
<div class="views-row views-row-14 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2743">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">How to teach students about free software</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2743">Saturday 11:35 - 12:20</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/IMG_20191119_105151174_Headshot.jpg">
<h2>William Liggett</h2></div>
-<div class="webform-long-answer">William Paul Liggett is a software engineering professor at the Northern Virginia Community College, where he teaches classes on Java, Python, HTML5/CSS3/JavaScript, Relational Databases, Cybersecurity, and GNU/Linux. He also is the owner and coder of junktext.com, where he does freelance development for others. William previously worked in the US defense and intelligence communities as a software developer, IT project manager, and systems administrator. He served in the US Marine Corps, where he was meritoriously promoted to Sergeant (E-5). He is also very skilled at amazing and very funny jokes!</div>
+<div class="webform-long-answer">William Paul Liggett is a software engineering professor at the Northern Virginia Community College, where he teaches classes on Java, Python, HTML5/CSS3/JavaScript, Relational Databases, Cybersecurity, and GNU/Linux. He also is the owner and coder of junktext.com, where he does freelance development for others. William previously worked in the US defense and intelligence communities as a software developer, IT project manager, and systems administrator. He served in the US Marine Corps, where he was meritoriously promoted to Sergeant (E-5). He is also very skilled at amazing and very funny jokes!</div>
</div></span> </div> </div>
<div class="views-row views-row-15 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3272">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">The Four Free-ums?</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3272">Sunday 15:25 - 16:10</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/masson.png">
<h2>Patrick Masson</h2></div>
-<div class="webform-long-answer">Patrick Masson joined the Open Source Initiative as General Manager in November of 2013 after working in higher education technology for over twenty years, including roles as Director of the UCLA Media Lab, CIO within The State University of New York, and most recently, CTO at UMassOnline. Patrick is an Adjunct Professor at the University at Albany, teaching Open Source Principles and Practices within the College of Engineering and Applied Sciences' Department of Informatics. Patrick has worked to promote the awareness and adoption of open source, particularly within education, throughout his career. He served on the Jasig Foundation's Board of Directors, and is currently on the Apereo Foundation's Advisory Council as well as Brandeis University's Graduate Professional Studies Advisory Board. He is the co-founder of the Educause Constituency Group on Openness. Patrick was also elected to his local Board of Education in 2014.</div>
+<div class="webform-long-answer">Patrick Masson joined the Open Source Initiative as General Manager in November of 2013 after working in higher education technology for over twenty years, including roles as Director of the UCLA Media Lab, CIO within The State University of New York, and most recently, CTO at UMassOnline. Patrick is an Adjunct Professor at the University at Albany, teaching Open Source Principles and Practices within the College of Engineering and Applied Sciences' Department of Informatics. Patrick has worked to promote the awareness and adoption of open source, particularly within education, throughout his career. He served on the Jasig Foundation's Board of Directors, and is currently on the Apereo Foundation's Advisory Council as well as Brandeis University's Graduate Professional Studies Advisory Board. He is the co-founder of the Educause Constituency Group on Openness. Patrick was also elected to his local Board of Education in 2014.</div>
</div></span> </div> </div>
<div class="views-row views-row-16 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2721">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Platform cooperativism, surveillance capitalism, predictive analysis, and you</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2721">Saturday 16:20 - 17:05</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<h2>Micky Metts</h2></div>
<div class="webform-long-answer">Micky is a worker/owner of Agaric (agaric.coop) and a member of the “free software for<br />\r
community building” movement, using free software tools like VOIP, Drupal, and GNU/Linux. She is a liaison between the US Solidarity Economy Network (SEN), a group devoted to ongoing dialogue on building the new economy network, and the US Federation of Worker Cooperatives (USFWC), the national grassroots organization of US worker-owners who are “building power<br />\r
-with national and international partners to advance an agenda for economic justice rooted in community-based shared ownership.” As a board member of the MayFirst Technology Movement cooperative, Micky works with technical activists to connect people with the information and tools they need to move from being a global network to becoming a global movement based on solidarity.</div>
+with national and international partners to advance an agenda for economic justice rooted in community-based shared ownership.” As a board member of the MayFirst Technology Movement cooperative, Micky works with technical activists to connect people with the information and tools they need to move from being a global network to becoming a global movement based on solidarity.</div>
</div></span> </div> </div>
<div class="views-row views-row-17 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2724">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">The importance of free software games</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2724">Sunday 14:30 - 15:15</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/nov2019.jpg">
<h2>Lori Nagel</h2></div>
<div class="webform-long-answer">Lori Nagel has worked on and off on the free software multi-player online role playing game project “Wograld,” which you can learn about at wograld.org. She has also written a free culture Web cartoon (see jastiv.com) and a free culture novel (see jastiv.blogspot.com/2019/03/free-culture-novels-where-to-post-them.html).<br />\r
-</div>
+</div>
</div></span> </div> </div>
<div class="views-row views-row-18 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2744">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">GNU Health Embedded: An introduction</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2744">Sunday 13:35 - 14:20</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/sean-obrien-02.jpg">
<h2>Sean O'Brien</h2></div>
-<div class="webform-long-answer">Sean O'Brien is a lecturer in law at Yale Law School with expertise in cybersecurity and mobile device forensics. Sean founded Yale Privacy Lab, where his research includes privacy auditing of Android apps. His current focus is IoT device security, work that has culminated in the PrivacySafe appliance and the GNU Health Embedded effort for the platform.</div>
+<div class="webform-long-answer">Sean O'Brien is a lecturer in law at Yale Law School with expertise in cybersecurity and mobile device forensics. Sean founded Yale Privacy Lab, where his research includes privacy auditing of Android apps. His current focus is IoT device security, work that has culminated in the PrivacySafe appliance and the GNU Health Embedded effort for the platform.</div>
</div></span> </div> </div>
<div class="views-row views-row-19 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2389">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free software game restoration</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2389">Sunday 11:35 - 12:20</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
<h2>Dennis Payne</h2></div>
-<div class="webform-long-answer">Dennis Payne is a free software game developer in his spare time. He has started Bt Builder and Troll Bridge, and maintains several other games he has stumbled across. "Open Game Source" is a series of articles about his game development efforts.</div>
+<div class="webform-long-answer">Dennis Payne is a free software game developer in his spare time. He has started Bt Builder and Troll Bridge, and maintains several other games he has stumbled across. "Open Game Source" is a series of articles about his game development efforts.</div>
</div></span> </div> </div>
<div class="views-row views-row-20 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="3270">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Lightning talks</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#3270">Sunday 15:25 - 16:10</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span>
</div>
Port: `22`<br />\r
Folder: `upload-here`<br />\r
<br />\r
-When you are done uploading email campaigns@fsf.org to let us know what video file to use.</div>
+When you are done uploading email campaigns@fsf.org to let us know what video file to use.</div>
</div></span> </div> </div>
<div class="views-row views-row-21 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2332">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Public Invention: Free hardware inventions “in the public, for the public”</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2332">Sunday 16:20 - 17:05</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
<h2>Robert Read</h2></div>
-<div class="webform-long-answer">Robert L. Read, PhD (computer science), after serving in director-level software engineering architecture and management positions, was a Presidential Innovation Fellow in 2013, where he advocated free software in the US federal government. He is a champion of Agile software development methods, an inventor, and a thought-leader. He holds two patents in optics. His most popular publication is “How to be a Programmer.” He began Public Invention in 2015 to produce free-libre hardware inventions and mathematical progress, and the project has mentored about eight students and produced two peer-reviewed papers so far. Rob is also the chief scientist of Skylight Digital, and CTO of Wacuri, Inc. He speaks Esperanto fluently.</div>
+<div class="webform-long-answer">Robert L. Read, PhD (computer science), after serving in director-level software engineering architecture and management positions, was a Presidential Innovation Fellow in 2013, where he advocated free software in the US federal government. He is a champion of Agile software development methods, an inventor, and a thought-leader. He holds two patents in optics. His most popular publication is “How to be a Programmer.” He began Public Invention in 2015 to produce free-libre hardware inventions and mathematical progress, and the project has mentored about eight students and produced two peer-reviewed papers so far. Rob is also the chief scientist of Skylight Digital, and CTO of Wacuri, Inc. He speaks Esperanto fluently.</div>
</div></span> </div> </div>
<div class="views-row views-row-22 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2539">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Digital painting with Krita on GNU/Linux: cute creature concept-art</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2539">Saturday 10:40 - 11:25</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/David-Revoy_profile-2018.jpg">
<h2>David Revoy</h2></div>
-<div class="webform-long-answer">David Revoy is a French digital artist, and a pioneer in the usage of a 100% libre workflow for digital painting in a professional environment. Revoy is a Krita instructor, and an art director for the Blender Foundation on Sintel and Spring open movies. He was a concept-artist for works including “Tears of Steel” and “Cosmos Laundromat.” He is also an illustrator for the Contributopia Campaign by Framasoft, and of course, the founder of the free (libre) Web comic “Pepper and Carrot.”</div>
+<div class="webform-long-answer">David Revoy is a French digital artist, and a pioneer in the usage of a 100% libre workflow for digital painting in a professional environment. Revoy is a Krita instructor, and an art director for the Blender Foundation on Sintel and Spring open movies. He was a concept-artist for works including “Tears of Steel” and “Cosmos Laundromat.” He is also an illustrator for the Contributopia Campaign by Framasoft, and of course, the founder of the free (libre) Web comic “Pepper and Carrot.”</div>
</div></span> </div> </div>
<div class="views-row views-row-23 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2686">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Bicycles as a metaphor for free software</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2686">Saturday 14:30 - 15:15</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<br />\r
/?/ Kilted Globetrotter,<br />\r
Free/Libre/Open Advocate<br />\r
-and Lifelong Hacker /?/</div>
+and Lifelong Hacker /?/</div>
</div></span> </div> </div>
<div class="views-row views-row-24 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2778">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Font Bakery: Gathering font engineering knowledge while improving a large collection of libre fonts</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2778">Saturday 13:35 - 14:20</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/FSanches-300x300_C.png">
<h2>Felipe Sanches</h2></div>
-<div class="webform-long-answer">Felipe Sanches is a software freedom activist and developer with contributions to the development of graphic design, CAD, 3D printing, and 3D modeling libre software such as Inkscape, OpenSCAD, and GNU LibreDWG. During the last few years, Felipe has provided professional libre software development services focused on font engineering and quality assurance for fonts. You can learn more about his work at https://www.fsf.org/working-together/profiles/felipe-sanches.</div>
+<div class="webform-long-answer">Felipe Sanches is a software freedom activist and developer with contributions to the development of graphic design, CAD, 3D printing, and 3D modeling libre software such as Inkscape, OpenSCAD, and GNU LibreDWG. During the last few years, Felipe has provided professional libre software development services focused on font engineering and quality assurance for fonts. You can learn more about his work at https://www.fsf.org/working-together/profiles/felipe-sanches.</div>
</div></span> </div> </div>
<div class="views-row views-row-25 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2361">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">The Gandhian way to freedom and privacy</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2361">Sunday 10:40 - 11:25</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<br />\r
Nishant was lead translator for Debian Installer l10n to Hindi during 2006-07, and a OpenStreetMap volunteer mapper. He actively contributes to the OpenWrt project and its packages.<br />\r
<br />\r
-These days, he tries to build awareness for building network equipment and self-hosting among students and enterprise decision makers. </div>
+These days, he tries to build awareness for building network equipment and self-hosting among students and enterprise decision makers. </div>
</div></span> </div> </div>
<div class="views-row views-row-26 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2450">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Patents and freedom: Where we stand now</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2450">Sunday 10:40 - 11:25</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Headshot 1 2017 small.jpg">
<h2>McCoy Smith</h2></div>
-<div class="webform-long-answer">McCoy Smith is the founding attorney at Lex Pan Law, a technology and intellectual property law firm in Portland, Oregon, USA. He also is on the editorial committee of the Journal of Open Law, Technology, & Society (JOLTS). For more than fifteen years, he acted as the primary support attorney for free software matters at Intel Corporation. Prior to joining Intel, he was in private practice in New York, NY and Washington, DC, specializing in IP litigation and patent prosecution. He was also a patent examiner in the US Patent and Trademark Office prior to law school. He is admitted to practice in New York, California, Oregon, and the US Patent & Trademark Office.</div>
+<div class="webform-long-answer">McCoy Smith is the founding attorney at Lex Pan Law, a technology and intellectual property law firm in Portland, Oregon, USA. He also is on the editorial committee of the Journal of Open Law, Technology, & Society (JOLTS). For more than fifteen years, he acted as the primary support attorney for free software matters at Intel Corporation. Prior to joining Intel, he was in private practice in New York, NY and Washington, DC, specializing in IP litigation and patent prosecution. He was also a patent examiner in the US Patent and Trademark Office prior to law school. He is admitted to practice in New York, California, Oregon, and the US Patent & Trademark Office.</div>
</div></span> </div> </div>
<div class="views-row views-row-27 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2725">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Stewarding technological freedom in agriculture</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2725">Saturday 14:30 - 15:15</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<br />\r
* Don Blair builds free software-compatible hardware systems for agriculture in collaboration with farmers and researchers. <br />\r
<br />\r
-All three presenters are members of the Gathering for Open Ag Tech (GOAT / goatech.org).</div>
+All three presenters are members of the Gathering for Open Ag Tech (GOAT / goatech.org).</div>
</div></span> </div> </div>
<div class="views-row views-row-28 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2769">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Community healing: Re-establishing norms, trust, and truth after crises</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2769">Sunday 16:20 - 17:05</a>
-<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
+<i class="glyphicon glyphicon-home"></i>: Back Bay Grand
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/DIYspinningwheel.png">
<h2>Katheryn Sutter</h2></div>
-<div class="webform-long-answer">Katheryn Sutter is an indefatigable DIY tinkerer, and a user of free software and Debian OS for day-to-day computing since 2003. She holds a PhD in community development and policy analysis, and a BS in human resources and family studies. Her fields of expertise include consensus-building, nonprofit board training, qualitative data analysis, and democratic theory.</div>
+<div class="webform-long-answer">Katheryn Sutter is an indefatigable DIY tinkerer, and a user of free software and Debian OS for day-to-day computing since 2003. She holds a PhD in community development and policy analysis, and a BS in human resources and family studies. Her fields of expertise include consensus-building, nonprofit board training, qualitative data analysis, and democratic theory.</div>
</div></span> </div> </div>
<div class="views-row views-row-29 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2855">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Sugar Labs -- Past, Present, and Future</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2855">Sunday 14:30 - 15:15</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<h2>Devin Ulibarri</h2></div>
<div class="webform-long-answer">Devin is co-creator of Music Blocks, a visual programming language for music created with Walter Bender as a SugarLabs project. He is co-founder and president of MAP Family Learning Center, which seeks to improve child development by offering high-quality classes in music, art, and programming. Devin is former chair of guitar for prep and continuing ed at New England Conservatory. Devin serves as co-admin and faculty for Boston GuitarFest, a prestigious festival directed by renowned guitarist Eliot Fisk.<br />\r
<br />\r
-SugarLabs founder Walter Bender will be co-hosting this presentation.</div>
+SugarLabs founder Walter Bender will be co-hosting this presentation.</div>
</div></span> </div> </div>
<div class="views-row views-row-30 views-row-even views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2591">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">LibreOffice's tenth anniversary: The many faces of a global free software community</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2591">Saturday 16:20 - 17:05</a>
-<i class="glyphicon glyphicon-home"></i>: Freedom
+<i class="glyphicon glyphicon-home"></i>: Freedom
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/bergamo.jpg">
<h2>Italo Vignoli</h2></div>
-<div class="webform-long-answer">Italo Vignoli is a founding member of The Document Foundation, the chairman emeritus of Associazione LibreItalia, an emeritus member of the OSI board, and co-chair of the ODF Advocacy OASIS Open Project. He co-leads LibreOffice marketing, public relations, and media relations, co-chairs the certification program, and is a spokesman for the project. He has contributed to large migration projects to LibreOffice in Italy, and is a LibreOffice certified migrator and trainer. From 2004 to 2010, he has been involved in the OOo project. In his professional life, he is a marketing consultant with decades of experience in high tech, and a visiting professor of marketing, public speaking, and public relations post-graduate courses. He has a degree in humanities at the University of Milan, and MBAs in marketing, public relations, and journalism. </div>
+<div class="webform-long-answer">Italo Vignoli is a founding member of The Document Foundation, the chairman emeritus of Associazione LibreItalia, an emeritus member of the OSI board, and co-chair of the ODF Advocacy OASIS Open Project. He co-leads LibreOffice marketing, public relations, and media relations, co-chairs the certification program, and is a spokesman for the project. He has contributed to large migration projects to LibreOffice in Italy, and is a LibreOffice certified migrator and trainer. From 2004 to 2010, he has been involved in the OOo project. In his professional life, he is a marketing consultant with decades of experience in high tech, and a visiting professor of marketing, public speaking, and public relations post-graduate courses. He has a degree in humanities at the University of Milan, and MBAs in marketing, public relations, and journalism. </div>
</div></span> </div> </div>
<div class="views-row views-row-1 views-row-odd views-row-first views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="2538">
<div class="talkblock" style="clear:both">
<h2 style="clear:both">Free software and the environment</h2>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2020/program/#2538">Saturday 13:35 - 14:20</a>
-<i class="glyphicon glyphicon-home"></i>: Patriot
+<i class="glyphicon glyphicon-home"></i>: Patriot
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/IMG_0304.JPG">
<h2>Ben O'Neill</h2></div>
-<div class="webform-long-answer">I am a high school student from the Boston area. I've been interested in free software since I was 13. I enjoy programming, listening to music, hanging with friends, and watching war movies.</div>
+<div class="webform-long-answer">I am a high school student from the Boston area. I've been interested in free software since I was 13. I enjoy programming, listening to music, hanging with friends, and watching war movies.</div>
</div></span> </div> </div>
</div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
- <!--pagestart-->
-
-
-
+ <!--pagestart-->
+
+
+
<div class="view-content">
<div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Saturday">Saturday</div></div><div class="view-grouping-content"> <h3>09:30 - 09:45 - Welcome Address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3279"><div id="3279">Welcome Address by FSF</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3279"><div id="3279">Welcome Address by FSF</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LibrePlanet 2020
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>09:45 - 10:30 - Opening Keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-the-future-young-hackers-keynote-panel/"><div id="3288">Free the Future Young Hackers Keynote Panel</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-the-future-young-hackers-keynote-panel/"><div id="3288">Free the Future Young Hackers Keynote Panel</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/panel.png">
Alyssa Rosenzweig, Taowa, and Erin Moon
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:40 - 11:25</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/digital-painting-with-krita-on-gnu-linux-cute-creature-concept-art/"><div id="2539">Digital painting with Krita on GNU/Linux: cute creature concept-art</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/digital-painting-with-krita-on-gnu-linux-cute-creature-concept-art/"><div id="2539">Digital painting with Krita on GNU/Linux: cute creature concept-art</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/David-Revoy_profile-2018.jpg">
David Revoy
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/rented-future-the-dangerous-rise-of-life-as-a-service/"><div id="2692">Rented future: The dangerous rise of life as a service</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/rented-future-the-dangerous-rise-of-life-as-a-service/"><div id="2692">Rented future: The dangerous rise of life as a service</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/lucy-ingham.jpg">
Lucy Ingham
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/transparent-code-secure-data-selling-free-software-to-the-us-government-our-bosses-and-ourselves/"><div id="2528">Transparent code, secure data: Selling free software to the US Government, our bosses, and ourselves</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/transparent-code-secure-data-selling-free-software-to-the-us-government-our-bosses-and-ourselves/"><div id="2528">Transparent code, secure data: Selling free software to the US Government, our bosses, and ourselves</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Karen-Johnson.jpg">
Karen Johnson
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Fen Labalme<br>
</table>
<h3>11:35 - 12:20</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/keeping-secrets-what-you-need-to-know-about-encryption/"><div id="2775">Keeping secrets: What you need to know about encryption</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/keeping-secrets-what-you-need-to-know-about-encryption/"><div id="2775">Keeping secrets: What you need to know about encryption</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/DeeDeeLavinder.png">
DeeDee Lavinder
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#2599"><div id="2599">Field notes from a digital rights activist</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#2599"><div id="2599">Field notes from a digital rights activist</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/signal-attachment-2019-10-19-144649.jpeg">
Giselle Jhunjhnuwala
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/how-to-teach-students-about-free-software/"><div id="2743">How to teach students about free software</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/how-to-teach-students-about-free-software/"><div id="2743">How to teach students about free software</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_20191119_105151174_Headshot.jpg">
William Liggett
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>12:20 - 13:35 - Lunch Break</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3277"><div id="3277">LUNCH BREAK</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3277"><div id="3277">LUNCH BREAK</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LUNCH BREAK
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:35 - 14:20</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/lessons-learned-from-cultivating-free-software-projects-and-communities/"><div id="2680">Lessons learned from cultivating free software projects and communities</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/lessons-learned-from-cultivating-free-software-projects-and-communities/"><div id="2680">Lessons learned from cultivating free software projects and communities</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/jjasghar_vmworld19.jpg">
JJ Asghar
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/font-bakery-gathering-font-engineering-knowledge-while-improving-a-large-collection-of-libre-fonts/"><div id="2778">Font Bakery: Gathering font engineering knowledge while improving a large collection of libre fonts</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/font-bakery-gathering-font-engineering-knowledge-while-improving-a-large-collection-of-libre-fonts/"><div id="2778">Font Bakery: Gathering font engineering knowledge while improving a large collection of libre fonts</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/FSanches-300x300_C.png">
Felipe Sanches
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-and-the-environment/"><div id="2538">Free software and the environment</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-and-the-environment/"><div id="2538">Free software and the environment</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_0304.JPG">
Ben O'Neill
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>14:30 - 15:15</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/preventing-the-iot-dystopia-with-copyleft/"><div id="2748">Preventing the IoT Dystopia with Copyleft</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/preventing-the-iot-dystopia-with-copyleft/"><div id="2748">Preventing the IoT Dystopia with Copyleft</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/bkuhn-photo-2017.jpg">
Bradley Kuhn
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/bicycles-as-a-metaphor-for-free-software/"><div id="2686">Bicycles as a metaphor for free software</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/bicycles-as-a-metaphor-for-free-software/"><div id="2686">Bicycles as a metaphor for free software</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/avatar.png">
. Salt
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/stewarding-technological-freedom-in-agriculture/"><div id="2725">Stewarding technological freedom in agriculture</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/stewarding-technological-freedom-in-agriculture/"><div id="2725">Stewarding technological freedom in agriculture</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/95381.jpg">
Michael Stenta
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Don Blair<br>
Jamie Gaehring<br>
</table>
<h3>15:25 - 16:10</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-for-community-radio-libretime-and-other-software-tools/"><div id="2572">Free software for community radio: LibreTime and other software tools</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-for-community-radio-libretime-and-other-software-tools/"><div id="2572">Free software for community radio: LibreTime and other software tools</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/D3003C9E-85A9-45BC-A451-9C6D4A58A8EC.jpeg">
Robb Ebright
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-enables-free-science/"><div id="2856">Free software enables free science</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-enables-free-science/"><div id="2856">Free software enables free science</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/paulgazz.jpg">
Paul Gazzillo
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Joshua Santana<br>
</table>
<h3>16:20 - 17:05</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/platform-cooperativism-surveillance-capitalism-predictive-analysis-and-you/"><div id="2721">Platform cooperativism, surveillance capitalism, predictive analysis, and you</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/platform-cooperativism-surveillance-capitalism-predictive-analysis-and-you/"><div id="2721">Platform cooperativism, surveillance capitalism, predictive analysis, and you</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/micky-metts-200x200-c-micky-metts-cc0-1-0.png">
Micky Metts
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Keegan Rankin<br>
Chris Thompson<br>
</div></span> </div> </td>
<td class="col-2 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/libreoffice-s-tenth-anniversary-the-many-faces-of-a-global-free-software-community/"><div id="2591">LibreOffice's tenth anniversary: The many faces of a global free software community</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/libreoffice-s-tenth-anniversary-the-many-faces-of-a-global-free-software-community/"><div id="2591">LibreOffice's tenth anniversary: The many faces of a global free software community</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/bergamo.jpg">
Italo Vignoli
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>17:15 - 18:00 - Closing Keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/fsf-award-ceremony/"><div id="3283">Keynote by FSF and Award Ceremony</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/fsf-award-ceremony/"><div id="3283">Keynote by FSF and Award Ceremony</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LibrePlanet 2020
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>18:00 - 18:15 - Closing remarks</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3278"><div id="3278">Closing remarks by FSF</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3278"><div id="3278">Closing remarks by FSF</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LibrePlanet 2020
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
</div></div><div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Sunday">Sunday</div></div><div class="view-grouping-content"> <h3>09:30 - 09:45 - Welcome Address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3281"><div id="3281">Welcome Address by FSF</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3281"><div id="3281">Welcome Address by FSF</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LibrePlanet 2020
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>09:45 - 10:30 - Opening Keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/for-us-by-us-free-technology-community-science-and-the-pursuit-of-environmental-problem-solving/"><div id="3282">For us, by us: Free technology, community science, and the pursuit of environmental problem solving</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/for-us-by-us-free-technology-community-science-and-the-pursuit-of-environmental-problem-solving/"><div id="3282">For us, by us: Free technology, community science, and the pursuit of environmental problem solving</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Dosemagen_bio image 2020.JPG">
Shannon Dosemagen
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:40 - 11:25</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-gandhian-way-to-freedom-and-privacy/"><div id="2361">The Gandhian way to freedom and privacy</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-gandhian-way-to-freedom-and-privacy/"><div id="2361">The Gandhian way to freedom and privacy</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/NS-PRofile.png">
Nishant Sharma
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/patents-and-freedom-where-we-stand-now/"><div id="2450">Patents and freedom: Where we stand now</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/patents-and-freedom-where-we-stand-now/"><div id="2450">Patents and freedom: Where we stand now</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Headshot 1 2017 small.jpg">
McCoy Smith
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>11:35 - 12:20</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-game-restoration/"><div id="2389">Free software game restoration</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-game-restoration/"><div id="2389">Free software game restoration</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
Dennis Payne
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-for-minorities-in-turkey-in-their-own-languages/"><div id="2666">Free software for minorities in Turkey in their own languages</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-for-minorities-in-turkey-in-their-own-languages/"><div id="2666">Free software for minorities in Turkey in their own languages</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/OzcanAlper.png">
Özcan Oğuz and Alper Atmaca
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Alper Atmaca<br>
</table>
<h3>12:20 - 13:35 - Lunch Break</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3276"><div id="3276">LUNCH BREAK</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#3276"><div id="3276">LUNCH BREAK</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LUNCH BREAK and MEMBER MEETING
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:35 - 14:20</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#2334"><div id="2334">Free software and the digital divide</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="/2020/speakers/#2334"><div id="2334">Free software and the digital divide</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
Ryan Fukunaga
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/gnu-health-embedded-an-introduction/"><div id="2744">GNU Health Embedded: An introduction</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/gnu-health-embedded-an-introduction/"><div id="2744">GNU Health Embedded: An introduction</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/sean-obrien-02.jpg">
Sean O'Brien
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/how-to-make-more-users-love-free-software/"><div id="3269">How to make more users love free software</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/how-to-make-more-users-love-free-software/"><div id="3269">How to make more users love free software</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Clarissa.jpg">
Clarissa Borges
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>14:30 - 15:15</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/fediverse-decentralized-social-networking-and-services/"><div id="3289">Fediverse: Decentralized Social Networking and Services</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/fediverse-decentralized-social-networking-and-services/"><div id="3289">Fediverse: Decentralized Social Networking and Services</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
der.hans .
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/sugar-labs-past-present-and-future/"><div id="2855">Sugar Labs -- Past, Present, and Future</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/sugar-labs-past-present-and-future/"><div id="2855">Sugar Labs -- Past, Present, and Future</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/profiles_ulibarri.jpg">
Devin Ulibarri
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Walter Bender<br>
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-importance-of-free-software-games/"><div id="2724">The importance of free software games</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-importance-of-free-software-games/"><div id="2724">The importance of free software games</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/nov2019.jpg">
Lori Nagel
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>15:25 - 16:10</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-four-free-ums/"><div id="3272">The Four Free-ums?</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-four-free-ums/"><div id="3272">The Four Free-ums?</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/masson.png">
Patrick Masson
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/lightning-talks/"><div id="3270">Lightning talks</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/lightning-talks/"><div id="3270">Lightning talks</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Freedom</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
Libre Planet
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/secure-scuttlebutt-peer-to-peer-collaboration-and-community-infrastructure/"><div id="2710">Secure Scuttlebutt: Peer-to-peer collaboration and community infrastructure</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/secure-scuttlebutt-peer-to-peer-collaboration-and-community-infrastructure/"><div id="2710">Secure Scuttlebutt: Peer-to-peer collaboration and community infrastructure</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/cel.jpg">
Charles Lehner
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>16:20 - 17:05</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/community-healing-re-establishing-norms-trust-and-truth-after-crises/"><div id="2769">Community healing: Re-establishing norms, trust, and truth after crises</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/community-healing-re-establishing-norms-trust-and-truth-after-crises/"><div id="2769">Community healing: Re-establishing norms, trust, and truth after crises</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/DIYspinningwheel.png">
Katheryn Sutter
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2 col-last">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/public-invention-free-hardware-inventions-in-the-public-for-the-public/"><div id="2332">Public Invention: Free hardware inventions “in the public, for the public”</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/public-invention-free-hardware-inventions-in-the-public-for-the-public/"><div id="2332">Public Invention: Free hardware inventions “in the public, for the public”</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Patriot</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
Robert Read
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Marc Jones<br>
</table>
<h3>17:15 - 18:00 - Closing Keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/locking-the-web-open-a-decentralized-web-that-can-operate-as-free-software-does/"><div id="3284">Locking the Web open: A decentralized web that can operate as free software does</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/locking-the-web-open-a-decentralized-web-that-can-operate-as-free-software-does/"><div id="3284">Locking the Web open: A decentralized web that can operate as free software does</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Brewster-Kahle.jpeg">
Brewster Kahle
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>18:00 - 18:15 - Closing remarks</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
- <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/closing-remarks-libreplanet-2020/"><div id="3285">Closing remarks by FSF</div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+
+ <div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/closing-remarks-libreplanet-2020/"><div id="3285">Closing remarks by FSF</div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Back Bay Grand</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2020/assets/logo-lores.png">
LibrePlanet 2020
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</tbody>
</table>
</div></div> </div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
<!-- wrapper for slides -->
<ul class="carousel-inner list-unstyled">
<li class="item active">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/communications/audiowide.png"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/communications/audiowide.png"
alt="[ Illustration of a woman listening to a LibrePlanet recording. ]" style="width: 80%;">
<p class="carousel-caption-center">
<br>
<a href="https://media.libreplanet.org">Audio and video recordings from the conference are now online!</a>
</p>
- </li>
+ </li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/keynotes.png"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/keynotes.png"
alt="[ Keynotes announced so far for LibrePlanet 2020. ]">
<p class="carousel-caption-center">
<br>
<a href="https://libreplanet.org/2020/live/">Find out more about virtual conference participation.</a>
</p>
- </li>
+ </li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/web_schedule.png"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/web_schedule.png"
alt="[ Graphic announcing LibrePlanet 2020 schedule release. ]">
<p class="carousel-caption-center">
The schedule for LibrePlanet 2020 is now live! <br>
</p>
</li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/volunteer1-2.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/volunteer1-2.jpg"
alt="[ A photo of the GNU Press table from LibrePlanet 2019. ]">
<p class="carousel-caption-center">
Volunteers keep LibrePlanet spinning <br>(and get great perks as well).<br>
</li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/general1-2.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/general1-2.jpg"
alt="[ Edward Platt, Valerie Young, Christopher Webber, Amy Zhang sitting together as co-panelists at LibrePlanet 2019. ]">
<p class="carousel-caption-center">
<!-- The Conference is not running at this time.
- <p>Please note that all online participants in LibrePlanet 2020 interactions are expected to abide by the conference's <a href="https://libreplanet.org/2020/safe-space-policy/">safe space policy</a>.</p>
+ <p>Please note that all online participants in LibrePlanet 2020 interactions are expected to abide by the conference's <a href="https://libreplanet.org/2020/safe-space-policy/">safe space policy</a>.</p>
<p> <div class="panel-body">
</div></p>
<h1>Raffle</h1>
-<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2020/sponsors">some of our generous sponsors</a>.
+<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2020/sponsors">some of our generous sponsors</a>.
<p>All attendees get a gratis raffle ticket, FSF members get a second gratis ticket, and everyone can buy more chances to win at the GNU Press table during LibrePlanet, as well as at the Friday open house and Saturday evening social events! Buy one ticket for $2, 3 tickets for $5, one arm's length for $20, cash or credit. FSF staff and board members are not eligible to participate in the raffle.</p>
<!-- <li>Subscriptions to <a href="https://jmp.chat/">JMP</a></li> -->
<!-- <li>ChaosKeys from <a href="https://altusmetrum.org/">Altus Metrum, LLC</a></li> -->
<!-- </ul> -->
-
+
<!--#include virtual="/2020/includes/footer.html"-->
</p>
<br>
<p>
-
+
<p><div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2020/sponsor-logos/jmp_libreplanet_logo.png" alt="JMP logo" height="18%" width="18%">
</div>
<img src="https://static.fsf.org/nosvn/libreplanet/2020/sponsor-logos/thinkpenguin.png" alt="ThinkPenguin logo" height="18%" width="18%">
</div>
</p>
-
+
<p><div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2020/sponsor-logos/Boston_Beer_Company.jpg" alt="Boston Beer Company logo" height="18%" width="18%">
</div>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/redhat.png" alt="The red hat logo." height="75%" width="75%">
-
+
</div>
<h2>In-kind and raffle sponsors</h2>
<img src="https://static.fsf.org/nosvn/libreplanet/2019/sponsor-logos/Boston_Beer_Company.jpg" alt="Boston Beer Company logo" height="25%" width="30%">
<img src="https://static.fsf.org/nosvn/libreplanet/2019/sponsor-logos/wegmans.svg" alt="Wegman's logo" height="25%" width="30%">
</p>
-
-
+
+
<!-- <div class="hover_img">
<img src="" alt="" height="50%" width="50%">
<p class="text-muted text-center"> <a href=""></a></p>
- </div>
-
+ </div>
+
-<p><em>All non-FSF logos are copyright their owners and used by permission.</em></p>
+<p><em>All non-FSF logos are copyright their owners and used by permission.</em></p>
-->
<!-- <h2>Confirmed Exhibitors</h2> -->
<!--#include virtual="/2020/includes/sidebar.html"-->
<h2>Unfortunately, pre-registration is full.</h2>
-<p>We will do our best to accomodate walk-up registrations.
+<p>We will do our best to accomodate walk-up registrations.
Prices are as follows:</p>
<ul>
<li>FSF members and students: $ 0</li>
<!--#include virtual="/2020/includes/sidebar.html"-->
##Unfortunately, pre-registration is full.
-We will do our best to accomodate walk-up registrations.
+We will do our best to accomodate walk-up registrations.
Prices are as follows:
* FSF members and students: $ 0
font-size: 20px;
}
-.lp-logo {
- margin-bottom: -75px;
+.lp-logo {
+ margin-bottom: -75px;
margin-top: 10px;
}
@media (max-width:600px) {
-
+
.talkblock{
clear: both;
text-align: left;
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
<h3>Hostels</h3>
<ul>
- <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Closest)</a> ($)</li>
+ <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Closest)</a> ($)</li>
<li><a href="https://www.foundhotels.com/cities/boston/">Found Hostel</a> ($$)</li>
-
+
<li>Other hostels a little farther out can be found at <a href="https://www.hostelworld.com/search?search_keywords=Boston,%20USA&country=USA&city=Boston&date_from=2020-03-14&date_to=2020-03-15&number_of_guests=1">HostelWorld</a></li>
</ul>
<li><a href="https://www.marriott.com/hotels/travel/bosbo-sheraton-boston-hotel/">The Sheraton</a> - Contemporary hotel (Marriott chain) Located centrally ($$)</li>
<li><a href="https://bostonparkplaza.reztrip.com/classic/en/special_offer?action=show&controller=landings&locale=en&rate_code%5B%5D=SHOSP&rate_code%5B%5D=SHOSP&starting_page=special_offer&vr=3">Boston Park Plaza</a> price varies ($$$)</li>
</ul>
-<p>
+<p>
<h2>Transportation</h2>
<p>The easiest way to get around Boston/Cambridge is to use the <a href="http://www.mbta.com">MBTA</a>. Passes can be purchased with cash or credit/debit cards in stations. </p>
<li>Cabs are located all over the city: at the airport and major subway stations.</li>
<li>The <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=BLUE">Blue Line</a> is a train, with a shuttle bus from Logan Airport to the Airport MBTA stop; the <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=SILVER">Silver Line</a> is an expedited bus. The MBTA website provides a very <a href="http://www.mbta.com/riding_the_t/logan/">helpful page</a> on how to navigate via the Silver Line and Blue Line from the airport.</li>
</ul>
-<p>
+<p>
<h3 id="getting-around"> Getting Around </h3>
<!-- <h4 id="getting-around">Getting to LibrePlanet at the Back Bay Events Center</h4> -->
<!--<p>Our <a href="#map">map</a> is useful for finding your way from the station to the conference.</p>
-->
-<p>
+<p>
<h4 id="getting-around">Getting to the Free Software Foundation office</h4>
<ul>
<ul>
<li>From North of the city, travel via <a href="http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=15583&lat=42.365551&lng=-71.061251">North Station</a> From there, take the Orange Line to <a href="http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=13771">Downtown Crossing</a> to reach the office. </li>
<li>From south of the city, travel via <a href="http://www.mbta.com/schedules_and_maps/rail/lines/stations/?stopId=191">South Station.</a> Take the red line to <a href="https://www.mbta.com/stops/place-dwnxg?from=global-search&query=downtown&facets=stops%2Cfacet-station%2Cfacet-stop"> Downtown Crossing.</a></li>
-</ul>
+</ul>
Directions: Each of these subway stations is only a block away from the FSF. State Street and Government Center are also in easy walking distance.
</ul>
<p>The door is unlocked during the day, so you can just come right on inside to the 5th floor. If the door happens to be locked, call us at +1 617 542 5942.</p>
<p><b>If you have questions about traveling, contact us at <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</b></p>
-
+
</li>
</ul>
<p class="text-muted">
LibrePlanet is produced by the <a href="https://www.fsf.org">Free Software Foundation (FSF). </a></p>
<p class="text-muted">
- <a href="https://www.fsf.org/about/contact/"><strong>Contact the FSF.</strong></a></p>
+ <a href="https://www.fsf.org/about/contact/"><strong>Contact the FSF.</strong></a></p>
<p class="text-muted">
Except where otherwise noted, this site and its images, logos and and other media are licensed under
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0</a>.
- <!--pagestart-->
+ <!--pagestart-->
<div class="view-content">
<h3>Keynote Speakers</h3>
<div class="webform-html-textarea"><h2 style="clear:both">A European Open Technology Fund: Building sustainable public funding for free software</h2></div>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#5416">Saturday 12:00 - 12:45 EDT - Opening keynote</a><br>
-<i class="glyphicon glyphicon-home" style="clear:both"></i>: Jupiter
+<i class="glyphicon glyphicon-home" style="clear:both"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="webform-html-textarea"><h2 style="clear:both">Machine agency: Infrastructure for creative automation</h2></div>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#5429">Sunday 12:00 - 12:45 EDT - Opening keynote</a><br>
-<i class="glyphicon glyphicon-home" style="clear:both"></i>: Jupiter
+<i class="glyphicon glyphicon-home" style="clear:both"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
</div>
</div></div> </div> </div>
<div class="views-row views-row-4 views-row-even views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="5428">
<div class="talkblock" style="clear:both">
<div class="webform-html-textarea"><h2 style="clear:both">Ten years of empowering activists AND everyday people through free mobile software</h2></div>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#5428">Sunday 17:30 - 18:15 EDT - Closing keynote</a><br>
-<i class="glyphicon glyphicon-home" style="clear:both"></i>: Jupiter
+<i class="glyphicon glyphicon-home" style="clear:both"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<h3>Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="5459">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#5459">Saturday 16:35 - 17:20 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-2 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4821">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4821">Saturday 12:55 - 13:40 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-3 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4830">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4830">Sunday 12:55 - 13:40 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-4 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4907">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4907">Saturday 15:40 - 16:25 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-5 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4548">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4548">Saturday 13:50 - 14:35 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4527"> </a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Workshops
+<i class="glyphicon glyphicon-home"></i>: Workshops
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack7">Workshop</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-11 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4285">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4285">Saturday 15:40 - 16:25 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-12 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4889">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4889">Sunday 16:35 - 17:20 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-13 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4624">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4624">Sunday 14:45 - 15:30 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-14 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4763">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4763">Sunday 16:35 - 17:20 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-15 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="5420">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#5420">Saturday 13:50 - 14:35 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-16 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4841">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4841">Saturday 14:45 - 15:30 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-17 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4415">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4415">Saturday 14:45 - 15:30 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-18 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4787">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4787">Saturday 12:55 - 13:40 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-19 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4877">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4877">Saturday 10:10 - 10:55 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-20 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4904">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4904">Sunday 14:45 - 15:30 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-21 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4869">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4869"> </a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Workshops
+<i class="glyphicon glyphicon-home"></i>: Workshops
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack7">Workshop</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-22 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4828">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4828">Saturday 13:50 - 14:35 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-23 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4670">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4670">Sunday 11:05 - 11:50 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-24 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4843">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4843">Saturday 15:40 - 16:25 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-25 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4678">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4678">Saturday 16:35 - 17:20 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-26 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4530">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4530">Sunday 11:05 - 11:50 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-27 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4650">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4650">Saturday 10:10 - 10:55 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-28 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4776">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4776">Sunday 15:40 - 16:25 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-29 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4737">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4737">Sunday 16:35 - 17:20 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-30 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4689">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4689">Saturday 12:55 - 13:40 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-31 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4663">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4663">Sunday 10:10 - 10:55 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-32 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4818">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4818">Sunday 13:50 - 14:35 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-33 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4858">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4858">12:55 EDT -14:25 EDT </a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Workshops
+<i class="glyphicon glyphicon-home"></i>: Workshops
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack7">Workshop</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-34 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4834">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4834">Sunday 10:10 - 10:55 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-35 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4730">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4730">Saturday 11:05 - 11:50 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-36 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4686">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4686">Sunday 15:40 - 16:25 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-37 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4844">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4844">Saturday 11:05 - 11:50 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-38 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4769">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4769">Sunday 10:10 - 10:55 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-39 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4707">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4707">Sunday 13:50 - 14:35 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-40 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4687">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4687">Saturday 14:45 - 15:30 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-41 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4819">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4819">Sunday 12:55 - 13:40 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-42 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4570">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4570">Sunday 12:55 - 13:40 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-43 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4673">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4673">Sunday 14:45 - 15:30 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-44 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="5442">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#5442">Sunday 15:40 - 16:25 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-45 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4906">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4906">Sunday 13:50 - 14:35 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-46 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4823">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4823">Sunday 11:05 - 11:50 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-47 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4909">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4909">Saturday 11:05 - 11:50 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
<div class="views-row views-row-48 views-row-even views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <div class="field-content"><hr id="4863">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2021/program/#4863">Saturday 10:10 - 10:55 EDT</a>
<br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
<br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
</div></div> </div>
<div class="views-field views-field-value-11"> <div class="field-content"></div> </div> </div>
</div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
- <!--pagestart-->
-
-
-
+ <!--pagestart-->
+
+
+
<div class="view-content">
<div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Saturday">Saturday</div></div><div class="view-grouping-content"> <h3>9:45 - 10:00 EDT - Welcome address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/welcome-address-by-the-fsf-5272/"><div id="5397"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
LibrePlanet 2021
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>10:10 - 10:55 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/technopolice-one-year-of-activism-against-surveillance-technologies/"><div id="4877"><div class="webform-html-textarea"><p>Technopolice: One year of activism against surveillance technologies</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Edlira Nano & Guinness
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="/2021/speakers/#4863"><div id="4863"><div class="webform-html-textarea"><p>Software Heritage: The great library of source code</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Stefano Zacchiroli
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/bridging-the-digital-divide-in-education-with-free-software-and-hardware/"><div id="4650"><div class="webform-html-textarea"><p>Bridging the digital divide in education with free software and hardware</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Sripath Roy Koganti
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>11:05 - 11:50 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-state-of-software-in-schools-and-what-to-do-about-it/"><div id="4909"><div class="webform-html-textarea"><p>The state of software in schools and what to do about it</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Mariah Villarreal
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/lessons-framasoft-has-learned/"><div id="4730"><div class="webform-html-textarea"><p>Lessons Framasoft has learned</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Pouhiou Noénaute
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/freeing-networks-where-we-need-freedom-most/"><div id="4844"><div class="webform-html-textarea"><p>Freeing networks where we need freedom most</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Alper Atmaca & Özcan Oğuz
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
</table>
<h3>12:00 - 12:45 EDT - Opening keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="/2021/speakers/#5416"><div id="5416"><div class="webform-html-textarea"><p>A European Open Technology Fund: Building sustainable public funding for free software</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Julia Reda
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>12:55 - 13:40 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/logiciel-libre-societe-libre-free-software-activism-in-france-and-europe/"><div id="4787"><div class="webform-html-textarea"><p>"Logiciel libre, société libre": Free software activism in France and Europe</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Etienne Gonnu
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="/2021/speakers/#4689"><div id="4689"><div class="webform-html-textarea"><p>The defense of the GNOME Foundation</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Neil McGovern
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/gamifying-education-the-libre-way/"><div id="4821"><div class="webform-html-textarea"><p>Gamifying education the libre way</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Giselle Jhunjhnuwala & Charlie Koch
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
</table>
<h3>13:50 - 14:35 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/right-to-repair/"><div id="4548"><div class="webform-html-textarea"><p>Right to Repair</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
iFixit .
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
Kyle Wiens<br>
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/hpp-committee/"><div id="5420"><div class="webform-html-textarea"><p>HPP committee</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
HPP Committee
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/manufactura-independente-10-years-of-designing-in-the-libre/"><div id="4828"><div class="webform-html-textarea"><p>Manufactura Independente: 10 years of designing in the libre</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Manufactura Independente
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>14:45 - 15:30 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/usable-security-for-end-users-how-tor-improves-usability-without-compromising-user-privacy/"><div id="4841"><div class="webform-html-textarea"><p>Usable security for end-users: How Tor improves usability without compromising user privacy</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Antonela Debiasi
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/does-your-gpu-work-with-free-graphics-drivers/"><div id="4687"><div class="webform-html-textarea"><p>Does your GPU work with free graphics drivers?</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Alyssa Rosenzweig
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/adopting-free-software-ideals/"><div id="4415"><div class="webform-html-textarea"><p>Adopting free software ideals</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Mike Gerwitz
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>15:40 - 16:25 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/jami-and-how-it-empowers-users/"><div id="4285"><div class="webform-html-textarea"><p>Jami and how it empowers users</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Amin Bandali
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/building-equitable-free-software-communities-for-all/"><div id="4843"><div class="webform-html-textarea"><p>Building equitable free software communities for all</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Karen Johnson
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/3nweb-a-better-digital-world-is-possible/"><div id="4907"><div class="webform-html-textarea"><p>3NWeb: A Better digital world is possible</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Mikalai Birukou & Sean O'Brien
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
</table>
<h3>16:35 - 17:20 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/fsa-apsb-winner-civicrm-introduction-to-civicrm/"><div id="5459"><div class="webform-html-textarea"><p>Introduction to CiviCRM</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Coleman Watts
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-challenges-of-change-for-values-centered-nonprofits/"><div id="4678"><div class="webform-html-textarea"><p>The challenges of change for values-centered nonprofits</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Luis Villa & Katherine Maher
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="/2021/fun/#lightning-talks"><div id="5421"><div class="webform-html-textarea"><p>Lightning talks</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
LibrePlanet 2021
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>17:30 - 18:05 EDT - Closing keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/keynote-by-fsf-president-geoff-knauth-and-executive-director-john-sullivan/"><div id="5422"><div class="webform-html-textarea"><p>Keynote by FSF president Geoff Knauth, and executive director John Sullivan</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
LibrePlanet 2021
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>18:05 - 18:20 EDT - FSF Award ceremony</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/fs-awards-ceremony/"><div id="5451"><div class="webform-html-textarea"><p>FSF Awards Ceremony</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
FSF Awards Ceremony
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>18:20 - 18:30 EDT - Closing remarks</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/closing-remarks-by-the-fsf-6d5f/"><div id="5423"><div class="webform-html-textarea"><p>Closing remarks by FSF</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
LibrePlanet 2021
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
</div></div><div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Sunday">Sunday</div></div><div class="view-grouping-content"> <h3>9:45 - 10:00 EDT - Welcome address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/welcome-address-by-the-fsf/"><div id="5427"><div class="webform-html-textarea"><p>Welcome Address by FSF</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
LibrePlanet 2021
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>10:10 - 10:55 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/reuse-simple-steps-to-declare-your-copyright-and-licenses/"><div id="4663"><div class="webform-html-textarea"><p>REUSE: Simple steps to declare your copyright and licenses</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Max Mehl
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/user-respecting-software-free-software-development-driven-by-users/"><div id="4834"><div class="webform-html-textarea"><p>User Respecting Software – free software development driven by users</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Lori Nagel
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/how-to-free-the-imagination/"><div id="4769"><div class="webform-html-textarea"><p>How to free the imagination</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
David Revoy
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>11:05 - 11:50 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/plom-paperless-open-marking/"><div id="4823"><div class="webform-html-textarea"><p>Plom: Paperless Open Marking</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Victoria Schuster, Dryden Wiebe & Vala Vakilian
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
<br>
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/public-money-public-code-a-campaign-framework-to-promote-software-freedom/"><div id="4530"><div class="webform-html-textarea"><p>"Public Money? Public Code!" A campaign framework to promote software freedom</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Matthias Kirschner
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/openwifi-project-the-dawn-of-the-free-libre-wifi-chip/"><div id="4670"><div class="webform-html-textarea"><p>Openwifi project: The dawn of the free/libre WiFi chip</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Xianjun Jiao
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>12:00 - 12:45 EDT - Opening keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="/2021/speakers/#5429"><div id="5429"><div class="webform-html-textarea"><p>Machine agency: Infrastructure for creative automation</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Nadya Peek
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>12:55 - 13:40 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/securedrop-workstation-handling-unsafe-documents-safely/"><div id="4819"><div class="webform-html-textarea"><p>SecureDrop Workstation: Handling unsafe documents safely</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Conor Schaefer
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/remote-education-my-children-s-freedom-and-privacy-at-stake/"><div id="4570"><div class="webform-html-textarea"><p>Remote education: My children's freedom and privacy at stake</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Javier Sepulveda Sanchis
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/ingestum-a-libre-nlp-document-ingestion-library/"><div id="4830"><div class="webform-html-textarea"><p>Ingestum: A libre NLP document ingestion library</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Walter Bender, Martín Abente Lahaye & Juan Pablo Ugarte
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
<br>
</table>
<h3>13:50 - 14:35 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/informal-chatter-to-formal-decisions-how-to/"><div id="4906"><div class="webform-html-textarea"><p>Informal chatter to formal decisions: How-to</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Katheryn Sutter
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="/2021/speakers/#4818"><div id="4818"><div class="webform-html-textarea"><p>Here's how you can get all your day-to-day computing done with free software</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Alice Monsen
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/a-dispatch-from-the-front-lines-of-right-to-repair/"><div id="4707"><div class="webform-html-textarea"><p>A dispatch from the front lines of right to repair</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Paul Roberts
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>14:45 - 15:30 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/labor-movements-and-the-free-software-community/"><div id="4673"><div class="webform-html-textarea"><p>Labor movements and the free software community</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Amanda Sopkin
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/an-information-theoretic-model-of-privacy-and-security-metrics/"><div id="4624"><div class="webform-html-textarea"><p>An information theoretic model of privacy and security metrics</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Bill Budington
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/making-dollars-and-sense-of-free-software-funding-s-future/"><div id="4904"><div class="webform-html-textarea"><p>Making dollars and sense of free software funding's future</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Wm Salt Hale
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>15:40 - 16:25 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/unjust-computing-clamps-down/"><div id="5442"><div class="webform-html-textarea"><p>Unjust computing clamps down</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Richard Stallman
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/empower-users-by-asking-them-for-money/"><div id="4686"><div class="webform-html-textarea"><p>Empower users by asking them for money</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Martin Owens
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/libre-designers-do-exist-and-survive/"><div id="4776"><div class="webform-html-textarea"><p>Libre designers do exist (and survive)</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Maria Leandro
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>16:35 - 17:20 EDT</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-libre-solutions-to-address-the-shortage-of-ventilators/"><div id="4737"><div class="webform-html-textarea"><p>Free/libre solutions to address the shortage of ventilators</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Robert Read & Marc Jones
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<br>
</div></div> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/how-to-make-more-users-love-free-software-double-the-love-double-the-freedom/"><div id="4889"><div class="webform-html-textarea"><p>How to make more users love free software: Double the love, double the freedom</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
Clarissa Borges
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/beyond-learning-to-code-how-tech-learning-collective-merges-it-training-with-emancipatory-political-action/"><div id="4763"><div class="webform-html-textarea"><p>Beyond "learning to code": How Tech Learning Collective merges IT training with emancipatory political action</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</div> </div>
Tech Learning Collective
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>17:30 - 18:15 EDT - Closing keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/keynote-ten-years-of-empowering-activists-and-everyday-people-through-free-mobile-software/"><div id="5428"><div class="webform-html-textarea"><p>Ten years of empowering activists AND everyday people through free mobile software</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
Nathan Freitas
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</table>
<h3>18:20 - 18:30 EDT - Closing remarks</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/closing-remarks-by-the-fsf/"><div id="5432"><div class="webform-html-textarea"><p>Closing remarks by FSF</p>
</div></div></a></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</div> </div>
LibrePlanet 2021
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
-
+
+
</div></div> </div> </td>
</tbody>
</table>
</div></div> </div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
Read our privacy policy.
</a>
</p>
- </div>
+ </div>
</div>
</div>
</form>
<br>
<a href="https://media.libreplanet.org/">Videos from LibrePlanet 2021 are now online!</a>
</p>
- </li>
+ </li>
<li class="item">
<a href="https://libreplanet.org/2021/registered/"><img src="//static.fsf.org/nosvn/libreplanet/2021/communications/livesite/LibreAdventure.png"
alt="[ Image of the LibreAdventure virtual space ]"></a>
<br>
<a href="https://libreplanet.org/2021/registered/">LibrePlanet 2021 has ended. Thank you for attending!</a>
</p>
- </li>
+ </li>
<li class="item">
<a href="https://shop.fsf.org"><img src="//static.fsf.org/nosvn/libreplanet/2021/communications/livesite/shirt.jpg"
alt="[ Image of the LibrePlanet 2021 t-shirt. ]"></a>
<br>
<a href="https://shop.fsf.org">Get your swag at the FSF shop.</a>
</p>
- </li>
+ </li>
<li class="item">
<img src="https://static.fsf.org/nosvn/libreplanet/2021/communications/livesite/libreplanet-minetest.png"
alt="[ Screenshot of minetest ]">
</p>
</li>
<!--<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/volunteer1-2.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/volunteer1-2.jpg"
alt="[ A photo of the GNU Press table from LibrePlanet 2019. ]">
<p class="carousel-caption-center">
Volunteers keep LibrePlanet spinning <br>(and get great perks as well).<br>
<title>Ingestum: A FOSS NLP document ingestion library</title>
<abstract>Many NLP projects that depend upon the analysis of documents are impaired by the difficulty of transforming source material into a computer-readable format. For example, PDF files are designed for human consumption but can look like a bag full of words to a computer. To address this problem engineers at Sorcero developed Ingestum, a library that is used to "devour" content sources, outputting a format that can be used for additional processing. Ingestum has four main concepts:
-Sources - common content sources that feed the ingestion process, e.g. PDF, HTML, PNG, WAV, Twitter, email, et al.
+Sources - common content sources that feed the ingestion process, e.g. PDF, HTML, PNG, WAV, Twitter, email, et al.
-Documents - the intermediary and final states of a source during the ingestion process.
+Documents - the intermediary and final states of a source during the ingestion process.
-Transformers - a transformation function that can be applied a document, e.g. removing hyphens from a text document.
+Transformers - a transformation function that can be applied a document, e.g. removing hyphens from a text document.
Conditionals - a logic conditional operation that can be use to modify the behavior of a transformer.</abstract>
<links>
<h1>Raffle</h1>
-<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2021/sponsors">some of our generous sponsors</a>.
+<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2021/sponsors">some of our generous sponsors</a>.
<p>All attendees get a gratis raffle ticket, FSF members get a second gratis ticket, and everyone can buy more chances to win at the GNU Press table during LibrePlanet, as well as at the Friday open house and Saturday evening social events! Buy one ticket for $2, 3 tickets for $5, one arm's length for $20, cash or credit. FSF staff and board members are not eligible to participate in the raffle.</p>
<!-- <li>Subscriptions to <a href="https://jmp.chat/">JMP</a></li> -->
<!-- <li>ChaosKeys from <a href="https://altusmetrum.org/">Altus Metrum, LLC</a></li> -->
<!-- </ul> -->
-
+
<!--#include virtual="/2021/includes/footer.html"-->
and the default port <code>30000</code>.
<p>Are you lost in the game? Use the in-game command <code>/spawn</code> to return to where you began.</p>-->
-<hr>
+<hr>
<a href="#voicechat"><h2 id="voicechat">Voice chat</h2></a>
<h3>Video chat</h3>
-Visit the exhibitor's Jitsi chat URL above, if provided. Cameras are optional.
+Visit the exhibitor's Jitsi chat URL above, if provided. Cameras are optional.
<h3>Voice chat</h3>
<img style="float: right; width: 200px; margin: 0 0 10px 10px;" src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/openSUSE_logo.png">
-<p><a href="https://en.opensuse.org/Portal:Project">The openSUSE project</a> is a worldwide effort that promotes the use of GNU/Linux everywhere. openSUSE creates one of the world's best distributions, as well as a variety of tools, such as *OBS, OpenQA, Kiwi, YaST, OSEM*, working together in an open, transparent and friendly manner as part of the worldwide
+<p><a href="https://en.opensuse.org/Portal:Project">The openSUSE project</a> is a worldwide effort that promotes the use of GNU/Linux everywhere. openSUSE creates one of the world's best distributions, as well as a variety of tools, such as *OBS, OpenQA, Kiwi, YaST, OSEM*, working together in an open, transparent and friendly manner as part of the worldwide
<a href="https://en.opensuse.org/Free_and_Open_Source_Software">free software community.</a></p>
<p><strong><a href="opensuse/">Read more / interact...</a></strong></p>
<a name="mapping"><h3>Making it Ours: Mapping the History of our Movements' Relationship to the Internet and Envisioning its Future</h3></a>
<ul>
<li><strong>Time:</strong> Sunday, 21 March, 12:55 - 14:25 EDT (16:55 - 18:25 UTC)</li>
-<li><strong>Capacity:</strong> 15 -20 max</li>
+<li><strong>Capacity:</strong> 15 -20 max</li>
<li><strong>Workshop style:</strong> Interactive workshop with access to chat, you will work with software during the workshop.</li>
<li><strong>Registration link:</strong> <a href="https://my.fsf.org/civicrm/event/info?reset=1&id=98">Register for the Making it Ours workshop</a></li>
<li><strong>Participate Link:</strong> <a href="https://testgreenlight.fsf.org/and-dwv-jtg">https://testgreenlight.fsf.org/and-dwv-jtg</a></li>
<li><strong>Presenter:</strong> <a href="/2021/speakers/#4527">Alice Aguilar</a> will host this workshop with Jamie McClelland, Jaime Villarreal, and Alfredo Lopez.</p></li>
-<li><strong>Description:</strong>
+<li><strong>Description:</strong>
<p>The cost of wide spread adoption of the corporate controlled internet is omnipresent surveillance, algorithmic racism, censorship and targeted manipulation of people of color. Are we ready to change? Can we envision people of color ownership of technology and community control grounded in social justice values?</p>
<p>Seasoned activists of the liberatory Internet movement will guide participants through an interactive time-line exercise: mapping the points in people of color movements’ histories that have shaped our relationship with the Internet for the last quarter century, exploring how we’ve used internet communications for movement resilience, and collectively strategizing what our future relationship should be. Technology is political and this exercise makes the case for the need of free software.</p>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/redhat-on-dark.png" alt="The red hat logo." height="75%" width="75%">
-
+
</div>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/eff.png" alt="Electronic Frontier Foundation logo." height="60%" width="60%">
</div>
-<br><br>
+<br><br>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/openSUSE-gray.png" alt="openSUSE logo" height="50%" width="50%">
</div>
-<br><br>
+<br><br>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/SugarLabs-gray.png" alt="Sugar Labs logo" height="65%" width="65%">
</div>
</div>
</p>
<br>
-
+
<p><div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/jmp_libreplanet_logo.png" alt="JMP logo" height="18%" width="18%">
</div>
<img src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/thinkpenguin.png" alt="ThinkPenguin logo" height="18%" width="18%">
</div>
</p>
-
+
<p><div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/2021/sponsor-logos/Boston_Beer_Company.jpg" alt="Boston Beer Company logo" height="18%" width="18%">
</div>
<div class="hover_img">
<img src="https://static.fsf.org/nosvn/libreplanet/sponsor-logos/redhat-on-dark.png" alt="The red hat logo." height="75%" width="75%">
-
+
</div>
<h2>In-kind and raffle sponsors</h2>
<img src="https://static.fsf.org/nosvn/libreplanet/2019/sponsor-logos/wegmans.svg" alt="Wegman's logo" height="25%" width="30%">
</p>
-->
-
-
+
+
<!-- <div class="hover_img">
<img src="" alt="" height="50%" width="50%">
<p class="text-muted text-center"> <a href=""></a></p>
- </div>
-
+ </div>
+
-<p><em>All non-FSF logos are copyright their owners and used by permission.</em></p>
+<p><em>All non-FSF logos are copyright their owners and used by permission.</em></p>
-->
<!-- <h2>Confirmed Exhibitors</h2> -->
<br>
-<h1>LibrePlanet 2021 Exhibitors</h1>
+<h1>LibrePlanet 2021 Exhibitors</h1>
Information for 2021 exhibitors will follow soon.
<!--#include virtual="/2021/includes/sidebar.html"-->
<h2>Unfortunately, pre-registration is full.</h2>
-<p>We will do our best to accomodate walk-up registrations.
+<p>We will do our best to accomodate walk-up registrations.
Prices are as follows:</p>
<ul>
<li>FSF members and students: $ 0</li>
<li><strong>Capacity:</strong> 8 max
<li><strong>Workshop style</strong> Highly interactive with access to voice and video
<!--<li><strong>Registration link:</strong> <a href="https://my.fsf.org/civicrm/event/info?reset=1&id=96">Register for the Free Software Data Fortress for Your Home workshop</a></li>-->
-<li><strong>Presenter:</strong> <a href="https://libreplanet.org/2021/speakers/#4858">Adam Monsen</a>
-<li><strong>Description:</strong>
-<li><strong>Materials: <code>git clone https://gitlab.com/meonkeys/lp2021-private-cloud-workshop.git</code></strong>
+<li><strong>Presenter:</strong> <a href="https://libreplanet.org/2021/speakers/#4858">Adam Monsen</a>
+<li><strong>Description:</strong>
+<li><strong>Materials: <code>git clone https://gitlab.com/meonkeys/lp2021-private-cloud-workshop.git</code></strong>
<br>
<p><strong>This workshop is currently full.</strong></p>
<p>Your data is essential to your life, your agency, and your future. Come learn how to save, serve, and safely share your data at home with a smorgasbord of free software. I'll cover rapid setup and basic use of tools such as Traefik, Pi-Hole, Nextcloud, BackupPC, Wallabag, Jellyfin, Wordpress, and more. With these tools you can collaboratively edit documents in realtime online, stream music and video, and future-proof your digital assets.</p></li></ul>
<hr id="4869">
-<a href="#expression"><h3 id="expression">Regular expression workshop</h3></a>
+<a href="#expression"><h3 id="expression">Regular expression workshop</h3></a>
<ul><li><strong>Time:</strong> Saturday, March 20, 15:40 - 17:10 EDT (19:40 - 21:10 UTC)</li>
<li><strong>Capacity:</strong> 15 - 20 max</li>
<li><strong>Workshop style</strong> Interactive workshop with access to chat, moderation will facilitate communications</li>
<hr id="4527">
-<a href="#mapping"><h3 id="mapping">Making it ours: Mapping the history of our movements' relationship to the Internet and envisioning its future</h3></a>
+<a href="#mapping"><h3 id="mapping">Making it ours: Mapping the history of our movements' relationship to the Internet and envisioning its future</h3></a>
<ul>
<li><strong>Time:</strong> Sunday, 21 March, 12:55 - 14:25 EDT (16:55 - 18:25 UTC)</li>
-<li><strong>Capacity:</strong> 15 -20 max</li>
+<li><strong>Capacity:</strong> 15 -20 max</li>
<li><strong>Workshop style</strong> Interactive workshop with access to chat, you will work with software during the workshop.</li>
<!--<li><strong>Registration link:</strong> <a href="https://my.fsf.org/civicrm/event/info?reset=1&id=98">Register for the Making it Ours workshop</a></li>-->
<li><strong>Presenter:</strong> <a href="https://libreplanet.org/2021/speakers/#4527">Alice Aguilar</a> will host this workshop with Jamie McClelland, Jaime Villarreal, and Alfredo Lopez.</li>
-<li><strong>Description:</strong>
+<li><strong>Description:</strong>
<p>The cost of wide spread adoption of the corporate controlled internet is omnipresent surveillance, algorithmic racism, censorship and targeted manipulation of people of color. Are we ready to change? Can we envision people of color ownership of technology and community control grounded in social justice values?</p>
<p>Seasoned activists of the liberatory Internet movement will guide participants through an interactive time-line exercise: mapping the points in people of color movements’ histories that have shaped our relationship with the Internet for the last quarter century, exploring how we’ve used internet communications for movement resilience, and collectively strategizing what our future relationship should be. Technology is political and this exercise makes the case for the need of free software.</p>
font-size: 20px;
}
-.lp-logo {
- margin-bottom: -78px;
+.lp-logo {
+ margin-bottom: -78px;
margin-top: 25px;
}
@media (max-width:600px) {
-
+
.talkblock{
clear: both;
text-align: left;
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-## Sorry, the feedback survey is now closed
-
+## Sorry, the feedback survey is now closed
+
[Return to the home page](https://www.libreplanet.org/2022)
-
+
<!--#include virtual="/2022/includes/footer.html"-->
<!--#include virtual="/2022/includes/common_js.html"-->
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-## One more step!
+## One more step!
Thanks for filling out the survey. To process your answers, we
need you to confirm your email address by clicking the link in
-the confirmation email we've just sent you.
-
+the confirmation email we've just sent you.
+
**Please check your email now for the confirmation link.**
-
+
[Return to the homepage.](https://www.libreplanet.org/2022/)
<!--#include virtual="/2022/includes/footer.html"-->
<!--<h2 id="lightning-talks">Lightning Talks</h2>
<h3>SATURDAY 17:15 - 18:00 EDT (21:15 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><h4>Lightning talks</h4></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
<div class="views-field views-field-value-7"> <div class="field-content"></div> </div>
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<p>Lightning talks are five-minute presentations given by conference attendees on free software topics they're passionate about.</p>
<p><strong>Participate:</strong> Have your five-minute talk streamed at LibrePlanet 2022: Living Liberation!</p>
<p><strong>Upload your <a href="https://libreplanet.org/wiki/Video_upload_instructions">lightning talk now.</a></strong></p>
-
+
</div></div> </div> </td>
</tr>
</tbody>
</table>
<hr>-->
-<!--<h2 id="trivia">LibrePlanet Trivia (Saturday)</h2>
+<!--<h2 id="trivia">LibrePlanet Trivia (Saturday)</h2>
<br>
<p>Supporters are invited to mental gymnastics at LibrePlanet 2022's free software trivia quiz! Win prizes and bragging rights while having a good time playing with your peers. Questions will vary in difficulty, and we expect all participants to play an honest game (no looking things up, please)!</p>
<h3>Hostels</h3>
<ul>
- <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Closest)</a> ($)</li>
+ <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Closest)</a> ($)</li>
<li><a href="https://www.foundhotels.com/cities/boston/">Found Hostel</a> ($$)</li>
-
+
<li>Other hostels a little farther out can be found at <a href="https://www.hostelworld.com/search?search_keywords=Boston,%20USA&country=USA&city=Boston&date_from=2020-03-14&date_to=2020-03-15&number_of_guests=1">HostelWorld</a></li>
</ul>
<li><a href="https://www.marriott.com/hotels/travel/bosbo-sheraton-boston-hotel/">The Sheraton</a> - Contemporary hotel (Marriott chain) Located centrally ($$)</li>
<li><a href="https://bostonparkplaza.reztrip.com/classic/en/special_offer?action=show&controller=landings&locale=en&rate_code%5B%5D=SHOSP&rate_code%5B%5D=SHOSP&starting_page=special_offer&vr=3">Boston Park Plaza</a> price varies ($$$)</li>
</ul>
-<p>
+<p>
<h2>Transportation</h2>
<p>The easiest way to get around Boston/Cambridge is to use the <a href="http://www.mbta.com">MBTA</a>. Passes can be purchased with cash or credit/debit cards in stations. </p>
<li>Cabs are located all over the city: at the airport and major subway stations.</li>
<li>The <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=BLUE">Blue Line</a> is a train, with a shuttle bus from Logan Airport to the Airport MBTA stop; the <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=SILVER">Silver Line</a> is an expedited bus. The MBTA website provides a very <a href="http://www.mbta.com/riding_the_t/logan/">helpful page</a> on how to navigate via the Silver Line and Blue Line from the airport.</li>
</ul>
-<p>
+<p>
<h3 id="getting-around"> Getting Around </h3>
<!-- <h4 id="getting-around">Getting to LibrePlanet at the Back Bay Events Center</h4> -->
<!--<p>Our <a href="#map">map</a> is useful for finding your way from the station to the conference.</p>
-->
-<p>
+<p>
<h4 id="getting-around">Getting to the Free Software Foundation office</h4>
<ul>
<ul>
<li>From North of the city, travel via <a href="http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=15583&lat=42.365551&lng=-71.061251">North Station</a> From there, take the Orange Line to <a href="http://www.mbta.com/schedules_and_maps/subway/lines/stations/?stopId=13771">Downtown Crossing</a> to reach the office. </li>
<li>From south of the city, travel via <a href="http://www.mbta.com/schedules_and_maps/rail/lines/stations/?stopId=191">South Station.</a> Take the red line to <a href="https://www.mbta.com/stops/place-dwnxg?from=global-search&query=downtown&facets=stops%2Cfacet-station%2Cfacet-stop"> Downtown Crossing.</a></li>
-</ul>
+</ul>
Directions: Each of these subway stations is only a block away from the FSF. State Street and Government Center are also in easy walking distance.
</ul>
<p>The door is unlocked during the day, so you can just come right on inside to the 5th floor. If the door happens to be locked, call us at +1 617 542 5942.</p>
<p><b>If you have questions about traveling, contact us at <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</b></p>
-
+
</li>
</ul>
-<!--pagestart-->
-
+<!--pagestart-->
+
<div class="view-content">
<h3>Keynote Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/lp-schedule/47#5914">Saturday 12:15 - 13:00 EDT - Opening keynote</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/marleen-stikker.jpg">
<h2>Marleen Stikker</h2></div>
<div class="webform-html-textarea"><p>Marleen Stikker is founder of Waag, a social organization and research institute for creative technologies and social innovation. The prolific advocate for free, honest, and inclusive technology, and honorary PhD, is also founder of The Digital City (1993), a group that provides free public access to the Internet in Amsterdam, and author of the book "Het Internet is Stuk" (The Internet is Broken).</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-38 views-row-even">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/lp-schedule/47#5916">Sunday 12:15 - 13:00 EDT - Opening keynote</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/wunderland.6.full_.jpg">
<h2>Hundred Rabbits</h2></div>
<div class="webform-html-textarea"><p>Hundred Rabbits is a small artist collective consisting of Rek (they), a writer and cartoonist, and Devine (they), a programmer, artist, and musician. They travel the globe together with their sailboat named "Pino" while creating and adapting software to fit their needs. They learned, with a lack of energy resources and Internet access, they needed to make adjustments to the way they were using their technology. Besides sharing their experiences about living on the water, they also document their use of various technologies and their art. In addition to blogs, cartoons, and music, they create and publish free (as in freedom) software projects.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-34 views-row-even">
-
- <!--Speakerblock-->
+
+ <!--Speakerblock-->
<div class="view-content">
<h3>Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
-
+
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-7 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5807">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5807">Sunday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="webform-html-textarea"><p>I describe myself as a hacker, entrepreneur and free software activist. I started using GNU/Linux exclusively in 1998 when I was a student and then started my first free software business - DeepRoot GNU/Linux - in 2000. Over the past 21 years, we have helped organizations of all sizes and sectors implement free software in various forms. The core idea has been that just the existence and awareness of free software is insufficient - unless someone can step in to offer support and services for it, many organizations would be unable to choose free software, or understand and appreciate its benefits.</p><br />
<p>I started a "liberated hardware business" in 2016 - Mostly Harmless - to build and sell hardware that would enable people to run free software in more places. I now operate an online shop - libretech.shop - to sell these devices with the promise that all devices sold there would be "ethical and hackable products which also offer convenience."</p><br />
<p>I am also a member of the board of Free Software Foundation of India (FSF-India) and participate in and contribute to various free software advocacy and education activities in India as a volunteer.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-8 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5757">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5757">Saturday 11:20 - 12:05 EDT (15:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="/2022/assets/img/logo.png">
<h2>Sagar Acharya</h2></div>
<div class="webform-html-textarea"><p><a href="https://designman.org/sagaracharya">Sagar Acharya</a> is a contributor at Genode OS, an ex developer of Hyperbola OS. He currently lives in Mumbai, India, and manages his startup, DesignMan, an online platform where he enables simple product designers to roll their designs out to the market.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-9 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5739">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5739">Sunday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<li>The constitutional features of the European Union</li><br />
<li>Freedom of speech in (European) constitutional jurisprudence (translation from French to Greek, original article written by Michel Verpeaux)</li><br />
</ul><p>Fluent in Greek (native), English, and French.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-10 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5853">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5853">Sunday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="/2022/assets/img/logo.png">
<h2>Amin Bandali</h2></div>
<div class="webform-html-textarea"><p>bandali is a free/libre software activist and computing scientist. Bandali is a GNU maintainer, Savannah hacker/admin, an assistant GNUisance of the GNU Project, and an FSF volunteer. Bandali also happens to be a GNU Emacs diehard who uses Emacs for just about every imaginable computing task, participates in its development, and is an organizer and sysadmin of the EmacsConf conference.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-11 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5763">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5763">Saturday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/aboutImage.jpg">
<h2>Nicholas Bernhard</h2></div>
<div class="webform-html-textarea"><p>Nicholas Bernhard is the developer of the Nantucket E-books platform, and the Shanty markup language for writing e-books. He is the author of the historical novel <em>November in America</em>, and the award-winning director of Blackstone's Equation: The Tim Masters Story.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-12 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5797">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5797">Sunday 11:20 - 12:05 EDT (15:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="/2022/assets/img/logo.png">
<h2>Denis Carikli</h2></div>
<div class="webform-html-textarea"><p>I'm one of the Replicant founders and developers. I'm a former developer of SHR (a GNU/Linux distribution for smartphones), and other related projects. I'm also a small Linux contributor. I was also involved in Coreboot and related projects but I don't have time anymore to contribute to it much.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-13 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5805">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5805">Saturday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<p>While he was studying at Victoria University, Adrian interned at Catalyst IT for an extended time where he worked on the KELP log file analytics/debugging project and Samba Windows-compatible file sharing project.</p><br />
<p>After graduating he successfully completed several contracts including ones for visualizing shared vocabularies with SKOS and a privacy-conscious blogging site. Additionally he completed a contract for NIWA to harvest WxS endpoints into GeoNetwork.</p><br />
<p>For his hobbies Adrian enjoys illustrating how software can be better through his personal projects, and is always keen for a game of Catan.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-14 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5830">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5830">Sunday 11:20 - 12:05 EDT (15:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="/2022/assets/img/logo.png">
<h2>Sebastian Crane</h2></div>
<div class="webform-html-textarea"><p>Sebastian Crane is an avid free software supporter who believes that open access to technology can help all facets of society. He is currently the Outreach Team co-chair for the SPDX Working Group, a project aiming to streamline free software licence compliance and supply chain security through rich and comprehensive package metadata.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-15 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5637">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5637">Saturday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Photo.jpg">
<h2>Thomas Deeb</h2></div>
<div class="webform-html-textarea"><p>Thomas is a professional software engineer passionate about software freedom. He has worked in game development for over 6 years and chose to release his debut indie title as free software during his transition to computing freedom, which started in 2019. Thomas has made contributions to many other free software projects, including Cinnamon, Nemo, MonoGame, and RetroArch. Outside software development, Thomas's interests include yoga, hiking, and composing chiptune music.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-16 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5641">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5641">Saturday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/photo_2021-10-21_13-25-01.jpg">
<h2>Kaio Duarte Costa</h2></div>
<div class="webform-html-textarea"><p>Director of Student Councils of the Collegiate Union of Minas Gerais (UCMG), Member of the Board of Follow-up and Social Control of FUNDEB (ConsFUNDEB-MG), Substitute Member of the Permanent State Forum on Education (FEPEMG), Member of the Public Committee of the National Association of Data Privacy Professionals (ANPPD), associated with the Brazilian Society for the Advancement of Science (SBPC) and the Brazilian Computer Society (SBC). Hackeractivist, student and student representative.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-17 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5918">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5918">Saturday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<h2>Jarek Duda</h2></div>
<div class="webform-html-textarea"><p>Jarek Duda received the M.Sc. degree in mathematics, the Ph.D. degree in computer science, and the Ph.D. degree in physics. He is currently an Assistant Professor with Jagiellonian University. He is mainly<br /><br />
focused on information theory and statistical analysis, and is known from introduction of asymmetric numeral systems (webpage: <a href="http://th.if.uj.edu.pl/~dudaj/">http://th.if.uj.edu.pl/~dudaj/"</a> )</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-18 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5902">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5902">Saturday 17:15 - 18:00 EDT (21:15 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Paul_Eggert-300x200.jpg">
<h2>Paul Eggert</h2></div>
<div class="webform-html-textarea"><p>Paul R. Eggert is a senior lecturer in the UCLA Computer Science Dept., teaching mostly in the areas of software development and programming languages. He has contributed to several free software projects, including Autoconf, Automake, Bison, GCC, the GNU C Library, GNU Coreutils, GNU Diff, GNU Emacs, GNU Grep, GNU M4, GNU Patch, GNU Tar, Gnulib, Gzip, and RCS. He has worked on the Time Zone Database since 1992, and currently serves as the Internet Engineering Steering Group’s Primary Coordinator for TZDB.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-19 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5622">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5622">Sunday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="webform-html-textarea"><p>Mark Fuller and Kfir Kaplan are both members of the Kinetics and Chemical Technology laboratory under Prof. Alon Dana at the Technion in Israel. Both Mark and Kfir are active in developing and contributing to free, libre software projects within the scientific community including Cantera, the Reaction Mechanism Generator, and the Automatic Rate Calculator.</p><br />
<p>Mark holds a PhD in chemical engineering and has used GNU/Linux and free software for his academic and professional career over the last 15+ years.His focus is combustion chemistry and past work has included batteries, fuel cells, and heat transfer.</p><br />
<p>Kfir is currently a fourth-year undergraduate student.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-20 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5728">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5728">Saturday 10:25 - 11:10 EDT (14:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<h2>Ángel García Menéndez</h2></div>
<div class="webform-html-textarea"><p>My name is Ángel García Menéndez. I am a software engineer from northern Spain, who graduated this very year. I have been a free software advocate for many years, and a student associate member of the FSF since 2018.</p><br />
<p>Apart from software engineering, I am also interested in social sciences, and I try to take a more human look to technology and the effect it has on people.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-21 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5810">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5810">Sunday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/favicon70x70.png">
<h2>Greta Goetz</h2></div>
<div class="webform-html-textarea"><p>Greta Goetz, PhD, is an Assistant Professor in the English Department at the Faculty of Philology, University of Belgrade. Her research is concerned with developing the potential of project-/problem-based networked learning and epistemic fluency to restore intercultural rifts such as the science and technology-humanities divide, the meanings and limitations of “digital literacy,” and the problem of receptivity in intercultural dialogue. Her work is informed by her East-West background and some of it can be found at <a href="https://gretzuni.com">https://gretzuni.com</a>.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-22 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5774">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5774">Saturday 11:20 - 12:05 EDT (15:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/bastien-guerry.jpg">
<h2>Bastien Guerry</h2></div>
<div class="webform-html-textarea"><p>Bastien Guerry is the free software officer for the French public administration. He first studied philosophy and cognitive sciences. He got interested in the free software movement in the late 90's and taught himself how to program by contributing to GNU Emacs. In 2008, he got involved in the One Laptop Per Child initiative and was recruited by Wikimedia France as its first employee in 2010. In 2017, he joined the "Public Interest Entrepreneurs" program, led by Etalab, the French department for open data. There he discovered the challenges faced by public agencies when it comes to maintaining and enhancing resilient IT infrastructures, recruiting tech profiles, rationalizing the use of free software and the contributions made by the public administration to the larger free software ecosystem.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-23 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5818">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5818">Sunday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/IMG_20191001_130326.jpg">
<h2>Clinton Ignatov</h2></div>
<div class="webform-html-textarea"><p>I have been using free software for nearly 20 years, beginning with my teenage forays into compiling Gentoo on my AMD K7 PC. Since then I've developed a strong interest in understanding the social impact of proprietary software through my deep readings of the work of Marshall McLuhan.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-24 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5846">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5846">Sunday 10:25 - 11:10 EDT (14:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<h2>Manufactura Independente</h2></div>
<div class="webform-html-textarea"><p>Manufactura Independente is a research studio for design and graphic communication focused on free software, free culture and critical engagement with design tools. Born in 2010 and based in Porto, Portugal, it is the testing laboratory and playground of Ana Isabel Carvalho and Ricardo Lafuente for their experiments in crossing design, free culture, media art, typography, data explorations and hardware archaeology. They've been actively and critically exploring these connections through their work in Web development, print design, playful data visualisation, custom software and engagement with non-conventional tools, as well as holding several type design workshops focused on alternative (and often quirky) creative workflows.<br /><br />
Web site: <a href="https://manufacturaindependente.org">https://manufacturaindependente.org</a></p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-25 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5836">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5836">Sunday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Roby_Novembre_2021_sq.png">
<h2>Roberto Innocenti</h2></div>
<div class="webform-html-textarea"><p>Among the founders of the project Open Hardware PowerPC Notebook, presenter and ambassador of the project. President of the association Power Progress Community which deals with the promotion and dissemination of free software and open hardware.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-26 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5790">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5790">Saturday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<div class="webform-html-textarea"><p>I consider myself a philosopher above all, but I'm also a blogger, free software evangelist, activist, and Haketilo developer. I started fighting for free software in higher education. Unwilling to work a corporate job, I now work on Haketilo. I use my online journal to promote software freedom, privacy, minimalism, and personal introspection. I have many strong opinions. You can find my personal homepage at <a href="https://nicksphere.ch">https://nicksphere.ch</a>. If you have Gemini, you can find me at gemini://nicksphere.ch.</p><br />
<p>Wojciech Kosior will be joining Nicholas for the Q&A section of this talk.</p><br />
<p><strong>Wojciech Kosior</strong> first learned about free software over five years ago. In 2021, <a href="https://www.gnu.org/education/how-i-fought-to-graduate-without-using-non-free-software.html">the story of his fight to graduate without running proprietary videoconferencing software</a> was published by the GNU Project. After graduating, he devoted his programming skills to the development of the Haketilo browser extension, which aims to give users back control over Web browsing. Besides being a free software hacker, he is a practicing Catholic and a guy who enjoys doing back flips and taking bike trips.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-27 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5761">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5761">Sunday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/William Paul Liggett -- Profile Picture -- 2020-08-21 [800x708].png">
<h2>William Liggett</h2></div>
<div class="webform-html-textarea"><p>William is a software engineer, Assistant Professor, & ethical hacker. He is also working on writing a book titled <em>Hands-On Cybersecurity Programming with Java</em>. Additionally, he develops in Python, JavaScript, PHP, and HTML5/CSS3. William has also obtained many "cool points" for getting more people to care about and use free software! And he has awesome dad-jokes that you don't want to miss!</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-28 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5849">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5849">Saturday 11:20 - 12:05 EDT (15:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<h2>José Marchesi</h2></div>
<div class="webform-html-textarea"><p>José E. Marchesi is a GNU hacker and maintainer. Currently employed by<br /><br />
Oracle as the Tech Lead of their Toolchain/Compilers team.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-29 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5753">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5753">Saturday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
business in data privacy and security while continuing to work on her
passion projects as part of a nonprofit focused on farmer citizenship
and wholistic wellness as well as an unschooling cooperative.</p>
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-30 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5812">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5812">Saturday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/IMG_20211001_083254.jpg">
<h2>Tristan Miller</h2></div>
<div class="webform-html-textarea"><p>Tristan Miller is a research scientist at the Austrian Research Institute for Artificial Intelligence and a member of Usenet’s Big-8 Management Board. He (co-)maintains several free software packages, including the generic preprocessor GPP and GNU’s moderation tool, STUMP.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-31 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5624">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5624">Sunday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<h2>Anjandev Momi</h2></div>
<div class="webform-html-textarea"><p>Anjan Momi is an Electrical and Computer Engineering MAsc. student at the University of Toronto. In his free time, he likes to hack on and improve free software.</p><br />
<p>Web site: <a href="https://momi.ca/">https://momi.ca/</a></p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-32 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5738">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5738">Sunday 11:20 - 12:05 EDT (15:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/ramakrishnan-for-lae.jpg">
<h2>Ramakrishnan Muthukrishnan</h2></div>
<div class="webform-html-textarea"><p>Ramakrishnan (Ram) is a programmer for the past 22 years and has contributed to several GNU projects in bits and pieces. He works for a Berlin based company called Least Authority. In his free time, he loves tinkering with electronics and radio and holds an amateur radio license with callsign VU3RDD.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-33 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5822">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5822">Saturday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/2021-12-14-201115.jpg">
<h2>Lori Nagel</h2></div>
<div class="webform-html-textarea"><p>Lori has been a freedom respecting software and free culture activist since 2005.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-34 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5847">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5847">Saturday 10:25 - 11:10 EDT (14:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<h2>Özcan Oğuz</h2></div>
<div class="webform-html-textarea"><p>Özcan Oğuz is the president of the Free Software Association (Özgür Yazılım Derneği) in Turkey. Ze started using computers at two, in 1999. In 2007, with the Pardus project, ze first encountered the<br /><br />
free software philosophy and has been using free software exclusively in zis devices ever since. Ze graduated from Kadıköy Anadolu High School and Boğaziçi University. In 2017, ze founded Hackerspace Istanbul in Kadıköy, İstanbul. Ze has worked in turn as a publisher, a journalist, and an instructor for GNU/Linux system administration at Mustafa Akgül Free Software Camps. Ze is currently working as a software developer.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-35 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5823">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5823">Saturday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/headshot_0.jpg">
<h2>Dennis Payne</h2></div>
<div class="webform-html-textarea"><p>Dennis Payne is a free software game developer in his spare time. He has started Bt Builder and Troll Bridge, and maintains several other games he has stumbled across. "Open Game Source" is a series of articles about his game development efforts. Recently he has been developing a free software game achievement system.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-36 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5646">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5646">Saturday 10:25 - 11:10 EDT (14:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/2021-11-07-123314.jpg">
<h2>Tobias Platen</h2></div>
<div class="webform-html-textarea"><p>I am a libre software engineer living in Göttigen, Germany. I have been using libre-distros of GNU/Linux on Respects Your Freedom (RYF) certified hardware for many years. In 2019 I became a contributor to the Libre-SOC project. I'm also a libre music producer and GNU Lilypond user, as well the author of the QTAU DAW.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-37 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5916">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5916">Sunday 12:15 - 13:00 EDT (16:15 UTC) - Opening keynote</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/wunderland.6.full_.jpg">
<h2>Hundred Rabbits</h2></div>
<div class="webform-html-textarea"><p>Hundred Rabbits is a small artist collective consisting of Rek (they), a writer and cartoonist, and Devine (they), a programmer, artist, and musician. They travel the globe together with their sailboat named "Pino" while creating and adapting software to fit their needs. They learned, with a lack of energy resources and Internet access, they needed to make adjustments to the way they were using their technology. Besides sharing their experiences about living on the water, they also document their use of various technologies and their art. In addition to blogs, cartoons, and music, they create and publish free (as in freedom) software projects.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-38 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5835">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5835">Sunday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/ruben.jpg">
<h2>Rubén Rodríguez Pérez</h2></div>
<div class="webform-html-textarea"><p>Spaniard, software engineer, photographer, GNU hacker, guitar player, ape descendant. Rubén started his career developing free software for research centers and universities, then founded the Trisquel GNU/Linux distribution project and other nonprofits. He has contributed to the freedom and privacy oriented Web tools GNU IceCat, GNU LibreJS and JShelter, and has worked in the One Laptop Per Child program and as a senior systems administrator and CTO of the Free Software Foundation. He likes dogs and paragliding, and dislikes writing about himself.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-39 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5808">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5808">Sunday 10:25 - 11:10 EDT (14:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune
+<i class="glyphicon glyphicon-home"></i>: Neptune
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="/2022/assets/img/logo.png">
<h2>Julin S</h2></div>
<div class="webform-html-textarea"><p>/Publishing well-formed Python packages/ at PyCon India 2020: <a href="https://www.youtube.com/watch?v=EAtYleEk0ig">https://www.youtube.com/watch?v=EAtYleEk0ig</a></p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-40 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5809">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5809">Sunday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<h2>Seth Schoen</h2></div>
<div class="webform-html-textarea"><p>Seth Schoen is a consultant living in San Francisco.</p><br />
<p>He was the first Staff Technologist at the Electronic Frontier Foundation (EFF) and helped develop the Let's Encrypt certificate authority. At EFF, he also researched topics like printer tracking dots, packet spoofing by ISPs, and computer memory forensics. He has testified before several courts and Federal agencies. Previously, he was the lead developer of the LNX-BBC distribution.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-41 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5852">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5852">Sunday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<h2>Protesilaos Stavrou</h2></div>
<div class="webform-html-textarea"><p> Protesilaos (aka "Prot") is a philosopher with a background in the<br /><br />
humanities. He used to work in politics, including as a parliamentary assistant at the European Parliament. He switched to free software in 2016 on the premise that it empowered the end user to operate the computer on their own terms. Since 2019, he is a power user of GNU Emacs. Prot is the author/maintainer of the modus-themes project: a pair of highly accessible themes which are built into Emacs. Prot is a tinkerer who has learnt how to program by using the free/libre tools at his disposal.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-42 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5914">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5914">Saturday 12:15 - 13:00 EDT (16:15 UTC) - Opening keynote</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/marleen-stikker.jpg">
<h2>Marleen Stikker</h2></div>
<div class="webform-html-textarea"><p>Marleen Stikker is founder of Waag, a social organization and research institute for creative technologies and social innovation. The prolific advocate for free, honest, and inclusive technology, and honorary PhD, is also founder of The Digital City (1993), a group that provides free public access to the Internet in Amsterdam, and author of the book "Het Internet is Stuk" (The Internet is Broken).</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-43 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5901">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5901">Saturday 17:15 - 18:00 EDT (21:15 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="/2022/assets/img/logo.png">
<h2>Lightning Talks</h2></div>
<div class="webform-html-textarea"><p>Participate: Have your five-minute talk streamed at LibrePlanet 2022: Living Liberation.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-44 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5645">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5645">Sunday 10:25 - 11:10 EDT (14:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span>
</div>
<h2>Blair Vidakovich</h2></div>
<div class="webform-html-textarea"><p>~vidak is a community organizer and software freedom advocate from Perth, Western Australia. This presentation was written on Emacs 27.2, running on EXWM on the Guix system.</p><br />
<p>~vidak has subscribed to the GNU philosophy of computer freedom for many years. He advocates for a deepening and broadening of our culture incessantly; wherever and whenever he can (:</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-45 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5878">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5878">Saturday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/kyle_headshot.png">
<h2>Kyle Wiens</h2></div>
<div class="webform-html-textarea"><p>Kyle Wiens is the CEO of iFixit, the free repair manual. He’s dedicated his life to defeating the second law of thermodynamics, a battle fought in the courtroom as often as in the workshop. The Right to Repair campaign has, so far, successfully legalized cell phone unlocking and tractor repair.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-46 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5684">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5684">Saturday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn
+<i class="glyphicon glyphicon-home"></i>: Saturn
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
<h2>Gunnar Wolf</h2></div>
<div class="webform-html-textarea"><p>I have been a free software user and promoter since 1995, Debian developer since 2003, and since 2009 am part of the Debian keyring-maintainers group. I have done other keyring-wide studies, one of which was presented at LibrePlanet 2018.<br /><br />
I am currently enrolled in a PhD program, and the talk I am giving is related to my research.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-47 views-row-odd views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="5756">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2022/program/#5756">Saturday 17:15 - 18:00 EDT (21:15 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter
+<i class="glyphicon glyphicon-home"></i>: Jupiter
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Aaron-Wolf-headshot.jpg">
<h2>Aaron Wolf</h2></div>
<div class="webform-html-textarea"><p>Aaron Wolf is co-founder of Snowdrift.coop and a long-time free software and free culture activist. In his day job as an independent music teacher, he pushes his students to use free/libre tools and release their music under free licenses.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
</div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
- <!--pagestart-->
-
-
-
+ <!--pagestart-->
+
+
+
<div class="view-content">
<div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Saturday">Saturday</div></div><div class="view-grouping-content"> <h3>10:00 - 10:15 EDT (14:00 UTC) - Welcome address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/libreplanet-2022-opening-remarks/"><div id="5910"><div class="webform-html-textarea"><p>Welcome Address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:25 - 11:10 EDT (14:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/living-liberated-zero-to-hero/"><div id="5847"><div class="webform-html-textarea"><p>Living liberated: Zero-to-hero</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/alperozcan.jpg">
Özcan Oğuz
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/federated-social-media-in-the-age-of-social-distancing/"><div id="5728"><div class="webform-html-textarea"><p>Federated social media in the age of social distancing</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/profile.jpg">
Ángel García Menéndez
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-librevr-project/"><div id="5646"><div class="webform-html-textarea"><p>The LibreVR Project</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/2021-11-07-123314.jpg">
Tobias Platen
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>11:20 - 12:05 EDT (15:20 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5757"><div id="5757"><div class="webform-html-textarea"><p>Survival of free software: Analyzing characteristics of free software in comparison to other software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Sagar Acharya
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/from-gnu-emacs-to-code-gouv-fr/"><div id="5774"><div class="webform-html-textarea"><p>From GNU Emacs to code.gouv.fr</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack5">Free software in Government</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/bastien-guerry.jpg">
Bastien Guerry
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/gnu-poke-the-free-extensible-editor-for-structured-binary-data/"><div id="5849"><div class="webform-html-textarea"><p>GNU poke, the free extensible editor for structured binary data</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/jemarch-t.png">
José Marchesi
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>12:15 - 13:00 EDT (16:15 UTC) - Opening keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/reclaiming-public-values-in-the-internet/"><div id="5914"><div class="webform-html-textarea"><p>Reclaiming public values in the internet</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/marleen-stikker.jpg">
Marleen Stikker
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:00 - 13:30 EDT (17:00 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5906"><div id="5906"><div class="webform-html-textarea"><p>Lunch, dinner, or morning coffee break!</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:35 - 14:20 EDT (17:35 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/empowering-community-oriented-play-with-trbot/"><div id="5637"><div class="webform-html-textarea"><p>Empowering community-oriented play with TRBot</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Photo.jpg">
Thomas Deeb
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/building-an-ethical-e-book/"><div id="5763"><div class="webform-html-textarea"><p>Building an ethical E-book</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/aboutImage.jpg">
Nicholas Bernhard
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/revitalizing-usenet/"><div id="5812"><div class="webform-html-textarea"><p>Revitalizing Usenet</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_20211001_083254.jpg">
Tristan Miller
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>14:30 - 15:15 EDT (18:30 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/repair-is-not-a-crime-an-update-from-the-front-line-of-the-right-to-repair-fight/"><div id="5878"><div class="webform-html-textarea"><p>Repair is not a crime: An update from the front line of the Right to Repair fight</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/kyle_headshot.png">
Kyle Wiens
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-game-restoration-ii/"><div id="5823"><div class="webform-html-textarea"><p>Free software game restoration II</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/headshot_0.jpg">
Dennis Payne
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/taking-back-the-web-with-haketilo/"><div id="5790"><div class="webform-html-textarea"><p>Taking back the Web with Haketilo</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/headshot_1.jpg">
Nicholas Johnson
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
Wojciech Kosior (Q&A)
-
+
</div></span> </div> </td>
</table>
<h3>15:25 - 16:10 EDT (19:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/why-we-all-need-ethical-technology-and-web-hosting/"><div id="5753"><div class="webform-html-textarea"><p>Why we all need ethical technology and Web hosting</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://static.fsf.org/nosvn/libreplanet/2022/assets/micky-2019.jpg">
Micky Metts
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Chris Thompson<br>
Melissa Bingham<br>
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/current-challenges-for-the-openpgp-keyserver-network-is-there-a-way-forward/"><div id="5684"><div class="webform-html-textarea"><p>Current challenges for the OpenPGP keyserver network. Is there a way forward?</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/gwolf_bosnia.jpg">
Gunnar Wolf
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/gnu-jami-how-it-works-and-how-to-get-your-friends-and-family-to-use-it/"><div id="5822"><div class="webform-html-textarea"><p>GNU Jami - How it works and how to get your friends and family to use it.</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/2021-12-14-201115.jpg">
Lori Nagel
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>16:20 - 17:05 EDT (20:20 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/ans-coding-replacing-huffman-and-ac-from-introduction-to-patent-issues/"><div id="5918"><div class="webform-html-textarea"><p>ANS coding replacing Huffman and AC - from introduction to patent issues</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_5364_cr.jpg">
Jarek Duda
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/you-wouldn-t-hate-artificial-scarcity/"><div id="5805"><div class="webform-html-textarea"><p>You Wouldn't Hate Artificial Scarcity</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/adrian-cochrane_0.jpg">
Adrian Cochrane
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-importance-of-student-participation-in-the-struggle-for-user-freedom-in-society/"><div id="5641"><div class="webform-html-textarea"><p>The importance of student participation in the struggle for user freedom in society</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/photo_2021-10-21_13-25-01.jpg">
Kaio Duarte Costa
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>17:15 - 18:00 EDT (21:15 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/why-our-economy-fails-public-goods-like-free-software-bf79/"><div id="5756"><div class="webform-html-textarea"><p>Why our economy fails public goods like free software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Aaron-Wolf-headshot.jpg">
Aaron Wolf
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5901"><div id="5901"><div class="webform-html-textarea"><p>Lightning Talks</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Lightning Talks
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/tzdb-and-some-challenges-of-long-data/"><div id="5902"><div class="webform-html-textarea"><p>TZDB and some challenges of long data</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Paul_Eggert-300x200.jpg">
Paul Eggert
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>18:10 - 18:25 EDT (22:10 UTC) - FSF Award ceremony & Closing notes</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5911"><div id="5911"><div class="webform-html-textarea"><p>FSF Awards Ceremony & Closing Remarks</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>18:30 - 19:30 EDT (22:30 UTC) - AfterParty</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5912"><div id="5912"><div class="webform-html-textarea"><p>Join the FSF Afterparty with Supporter and Stalwart level attendees!</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Videoconferencing with Supporter and Stalwart level attendees</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Videoconferencing with Supporter and Stalwart level attendees</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
</div></div><div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Sunday">Sunday</div></div><div class="view-grouping-content"> <h3>10:00 - 10:15 EDT (14:00 UTC) - Welcome address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/sunday-welcome-address/"><div id="5909"><div class="webform-html-textarea"><p>Welcome Address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:25 - 11:10 EDT (14:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/design-in-the-command-line-recipes-for-tasty-outcomes/"><div id="5846"><div class="webform-html-textarea"><p>Design in the command line: Recipes for tasty outcomes</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/manufactura.jpg">
Manufactura Independente
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/toward-the-moral-objectivity-of-gnu/"><div id="5645"><div class="webform-html-textarea"><p>Toward the moral objectivity of GNU</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/fedi-profile-jlh-birthday.jpeg">
Blair Vidakovich
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/living-federation/"><div id="5808"><div class="webform-html-textarea"><p>Living federation</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Julin S
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>11:20 - 12:05 EDT (15:20 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/replicant-struggle-for-independence/"><div id="5797"><div class="webform-html-textarea"><p>Replicant: Struggle for independence</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Denis Carikli
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/distributing-freedom-how-package-managers-empower-software-users/"><div id="5830"><div class="webform-html-textarea"><p>Distributing freedom: How package managers empower software users</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Sebastian Crane
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/easy-secure-and-private-information-transfer-with-magic-wormhole/"><div id="5738"><div class="webform-html-textarea"><p>Easy, secure and private information transfer with magic-wormhole</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/ramakrishnan-for-lae.jpg">
Ramakrishnan Muthukrishnan
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>12:15 - 13:00 EDT (16:15 UTC) - Opening keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/software-doldrums/"><div id="5916"><div class="webform-html-textarea"><p>Software Doldrums</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/wunderland.6.full_.jpg">
Hundred Rabbits
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:00 - 13:30 EDT (17:00 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5907"><div id="5907"><div class="webform-html-textarea"><p>Lunch, dinner, or morning coffee break!</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:35 - 14:20 EDT (17:35 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/hacking-my-brain-free-virtual-reality-implementations-and-their-potential-for-therapeutic-use/"><div id="5835"><div class="webform-html-textarea"><p>Hacking my brain: Free virtual reality implementations and their potential for therapeutic use</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/ruben.jpg">
Rubén Rodríguez Pérez
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/retracing-digital-freedom-in-the-classroom/"><div id="5810"><div class="webform-html-textarea"><p>Retracing digital freedom as pattern learning for life</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/favicon70x70.png">
Greta Goetz
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/a-free-toolchain-from-molecular-vibrations-to-detailed-combustion-how-some-physical-chemists-and-chemical-engineers-have-escaped-proprietary-software/"><div id="5622"><div class="webform-html-textarea"><p>A free toolchain from molecular vibrations to detailed combustion: How (some) physical chemists and chemical engineers have escaped proprietary software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Fuller_RWTH_3.jpg">
Mark Fuller
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Kfir Kaplan<br>
</table>
<h3>14:30 - 15:15 EDT (18:30 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/living-in-freedom-with-gnu-emacs/"><div id="5852"><div class="webform-html-textarea"><p>Living in freedom with GNU Emacs</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Protesilaos Stavrou
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-state-of-software-patents-in-2022/"><div id="5739"><div class="webform-html-textarea"><p>The state of software patents in 2022</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/panos-cropped.png">
Panos Alevropoulos
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/building-a-liberate-home-for-myself-and-others/"><div id="5807"><div class="webform-html-textarea"><p>Building a Liberated Home - for myself and others</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/abhas-passport-size-photo.jpg">
Abhas Abhinav
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>15:25 - 16:10 EDT (19:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/reducing-internet-address-waste-the-ipv4-unicast-extensions-project/"><div id="5809"><div class="webform-html-textarea"><p>Reducing Internet address waste: The IPv4 unicast extensions project</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Seth headshot_1.jpg">
Seth Schoen
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/baby-steps-to-freedom/"><div id="5761"><div class="webform-html-textarea"><p>Baby steps to freedom</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/William Paul Liggett -- Profile Picture -- 2020-08-21 [800x708].png">
William Liggett
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/why-we-feel-it-is-a-liberation-experience-to-take-part-in-the-open-hardware-powerpc-notebook-project/"><div id="5836"><div class="webform-html-textarea"><p>Why we feel it is a liberation experience to take part in the Open Hardware PowerPC Notebook project</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Roby_Novembre_2021_sq.png">
Roberto Innocenti
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>16:20 - 17:05 EDT (20:20 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/sxmo-freedom-on-mobile-devices-through-simplicity-and-hackability/"><div id="5624"><div class="webform-html-textarea"><p>Sxmo: Freedom on mobile devices through simplicity and hackability</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/avatar.jpg">
Anjandev Momi
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2022/speakers/#5853"><div id="5853"><div class="webform-html-textarea"><p>The Net beyond the web</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack10">Exploring Free Software concepts</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
Amin Bandali
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-media-ecology-of-source-code-access/"><div id="5818"><div class="webform-html-textarea"><p>The media ecology of source code access</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_20191001_130326.jpg">
Clinton Ignatov
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>17:15 - 17:45 EDT (21:15 UTC) - Closing keynote</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/keynote-by-free-software-foundation/"><div id="5913"><div class="webform-html-textarea"><p>Keynote by Free Software Foundation</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>17:45 - 18:00 EDT (21:45 UTC) - Closing notes</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/libreplanet-2022-closing-remarks/"><div id="5908"><div class="webform-html-textarea"><p>LibrePlanet: Living Liberation Closing remarks</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="/2022/assets/img/logo.png">
LibrePlanet 2022
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</tbody>
</table>
</div></div> </div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
<p>LibrePlanet (March 19 & 20, online) is the annual conference hosted by the Free Software Foundation. LibrePlanet provides an opportunity for community activists, domain experts, and people seeking solutions for themselves to come together in order to discuss current issues in technology and ethics.</p>
-<p>This year's LibrePlanet theme is <strong>"Living Liberation"</strong>.
+<p>This year's LibrePlanet theme is <strong>"Living Liberation"</strong>.
<!--<h3>Registration</h3>
<p>Please <strong><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=99">register</a></strong> for the conference to help support the organization of LibrePlanet, and access our special perks for registered attendees. Plus, you'll get a <a href="https://shop.fsf.org">GNU Press</a> shop discount!</p>
<li><a href="https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2022-video/">Watch the Conference Videos!</a></li>
<li><a href="/2022/program">Schedule</a></li>
<li><a href="/2022/speakers">Bios & Talks</a></li>
-<li><a href="https://my.fsf.org/node/49/">Fill in the Questionnaire</a></li>
+<li><a href="https://my.fsf.org/node/49/">Fill in the Questionnaire</a></li>
<!-- <li><a href="/2022/fun/">Registered Access</a></li> -->
<!-- <li><a href="/2022/live/">Live</a></li> -->
<!-- <li class="livestream-link"><a href="/2020/live">Live Video Recordings <span class="glyphicon glyphicon-globe"></span></a></li> -->
<li><a href="/2022/sponsors">Sponsors and Exhibitors</a></li>
<!--<li><a href="/2022/volunteer/">Volunteer</a></li>-->
<!-- <li><a href="https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2021-video/">2021 Session Videos</a></li> -->
-<li><a href="https://lists.gnu.org/mailman/listinfo/libreplanet-discuss">Join the Discussion List</a></li>
+<li><a href="https://lists.gnu.org/mailman/listinfo/libreplanet-discuss">Join the Discussion List</a></li>
<!-- <li><a href="https://www.fsf.org/about/contact/">Contact Us</a></li> -->
<!--<li><a href="https://www.fsf.org/blogs/community/free-software-awards-recognize-those-who-advance-our-freedom-by-october-28th">FSF Award Nomination</a></li>-->
<!-- wrapper for slides -->
<ul class="carousel-inner list-unstyled" style="max-width:900px; max-height:700px; !important;">
<li class="item active">
- <a href="https://www.fsf.org/"><img src="https://static.fsf.org/nosvn/libreplanet/2022/communications/LP-ty.png"
+ <a href="https://www.fsf.org/"><img src="https://static.fsf.org/nosvn/libreplanet/2022/communications/LP-ty.png"
alt="[ LibrePlanet thank you image ]"></a>
<p class="carousel-caption-center">
<br>
Thank you for another great edition of LibrePlanet!
</p>
- </li>
+ </li>
<!--<li class="item active">
- <a href="https://libreplanet.org/2022/live/"><img src="https://static.fsf.org/nosvn/libreplanet/2022/communications/LIVE.png"
+ <a href="https://libreplanet.org/2022/live/"><img src="https://static.fsf.org/nosvn/libreplanet/2022/communications/LIVE.png"
alt="[ LibrePlanet watch live image ]"></a>
<p class="carousel-caption-center">
<br>
<a href="https://libreplanet.org/2022/live">Watch LibrePlanet <strong>live:</strong></a> and<a href="https://my.fsf.org/civicrm/event/info?reset=1&id=99"> register today,</a> so you get the shop discount!</a>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2022/communications/keynotes.png"
+ <img src="//static.fsf.org/nosvn/libreplanet/2022/communications/keynotes.png"
alt="[ Composed image of Keynote announcement for Marleen Stikker, HundredRabbits, and 2 open circles her image in a circle on it. ]"></a>
<p class="carousel-caption-center">
<br>
<a href="https://www.fsf.org/news/">We're excited to announce the first two keynotes joining us at LibrePlanet 2022</a>
</p>
</li>
- </li>
+ </li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2021/assets/day-2/LP-videos.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2021/assets/day-2/LP-videos.jpg"
alt="[ Screenshot of LibrePlanet 2021. ]"></a>
<p class="carousel-caption-center">
<br>
</p>
</li>
<li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/donate1-2.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/donate1-2.jpg"
alt="[ A large group of people at the offices of the Free Software Foundation. ]"></a>
<p class="carousel-caption-center">
<a href="https://my.fsf.org/civicrm/contribute/transact?reset=1&id=60">Donate to help support the organization of LibrePlanet.</a></p>
</p>
</li>
<!-- <li class="item">
- <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/volunteer1-2.jpg"
+ <img src="//static.fsf.org/nosvn/libreplanet/2020/assets/volunteer1-2.jpg"
alt="[ A photo of the GNU Press table from LibrePlanet 2019. ]">
<p class="carousel-caption-center">
Volunteers keep LibrePlanet spinning <br>(and get great perks as well).<br>
<h1>Raffle</h1>
-<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2022/sponsors">some of our generous sponsors</a>.
+<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2022/sponsors">some of our generous sponsors</a>.
<p>All attendees get a gratis raffle ticket, FSF members get a second gratis ticket, and everyone can buy more chances to win at the GNU Press table during LibrePlanet, as well as at the Friday open house and Saturday evening social events! Buy one ticket for $2, 3 tickets for $5, one arm's length for $20, cash or credit. FSF staff and board members are not eligible to participate in the raffle.</p>
<!-- <li>Subscriptions to <a href="https://jmp.chat/">JMP</a></li> -->
<!-- <li>ChaosKeys from <a href="https://altusmetrum.org/">Altus Metrum, LLC</a></li> -->
<!-- </ul> -->
-
+
<!--#include virtual="/2022/includes/footer.html"-->
<br>
-<h2>LibrePlanet 2022 Exhibitors</h2>
+<h2>LibrePlanet 2022 Exhibitors</h2>
<p>The lively Exhibit Hall at LibrePlanet will be open on both conference days (times TBC), with something for everyone. Be sure to take a virtual stroll around and meet exhibitors who care about software freedom.</p>
<br>
<h4>LibrePlanet has ended. We thank Spruce for supporting us!</h4>
-<p>Spruce has an exhibitor space in the <a href="https://play.libreadventure.fsf.org">LibreAdventure</a> Spruce area (our virtual conference space).
+<p>Spruce has an exhibitor space in the <a href="https://play.libreadventure.fsf.org">LibreAdventure</a> Spruce area (our virtual conference space).
<!--<ul>
<li> Saturday 10:00-15:00 EDT (14:00-19:00 UTC)</li>
<li> Sunday 10:00-12:00 EDT (14:00-16:00 UTC)</li>
<h3>Video chat</h3>
-Visit the exhibitor's Jitsi chat URL above, if provided. Cameras are optional.
+Visit the exhibitor's Jitsi chat URL above, if provided. Cameras are optional.
<h3>Voice chat</h3>
<!--#include virtual="/2022/includes/sidebar.html"-->
<h2>Unfortunately, pre-registration is full.</h2>
-<p>We will do our best to accomodate walk-up registrations.
+<p>We will do our best to accomodate walk-up registrations.
Prices are as follows:</p>
<ul>
<li>FSF members and students: $ 0</li>
<!--#include virtual="/2022/includes/sidebar.html"-->
##Unfortunately, pre-registration is full.
-We will do our best to accomodate walk-up registrations.
+We will do our best to accomodate walk-up registrations.
Prices are as follows:
* FSF members and students: $ 0
font-size: 20px;
}
-.lp-logo {
- margin-bottom: -78px;
+.lp-logo {
+ margin-bottom: -78px;
margin-top: 25px;
}
@media (max-width:600px) {
-
+
.talkblock{
clear: both;
text-align: left;
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-##Please check for our confirmation email
+##Please check for our confirmation email
For your protection and to prevent spam, we don't process form
submissions until you click the link in the confirmation email.
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-## Sorry, the feedback survey is now closed
-
+## Sorry, the feedback survey is now closed
+
[Return to the home page](https://www.libreplanet.org/2022)
-
+
<!--#include virtual="/2022/includes/footer.html"-->
<!--#include virtual="/2022/includes/common_js.html"-->
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-## One more step!
+## One more step!
Thanks for filling out the survey. To process your answers, we
need you to confirm your email address by clicking the link in
-the confirmation email we've just sent you.
-
+the confirmation email we've just sent you.
+
**Please check your email now for the confirmation link.**
-
+
[Return to the homepage.](https://www.libreplanet.org/2022/)
<!--#include virtual="/2022/includes/footer.html"-->
<p><a href="#dinner">Diversity dinner</a></p>
<p><a href="#hack">Hack night</a></p>
<p><a href="#BoF">Birds of a Feather social events</a></p>
- <p><a href="#member-meeting">Annual FSF associate members meeting</a></p>
+ <p><a href="#member-meeting">Annual FSF associate members meeting</a></p>
<!-- <p><a href="#job-board">Job board</a></p> -->
<!--<p><a href="#lightning-talks">Lightning Talks</a></p>-->
<!--<p><a href="#trivia">LibrePlanet trivia</a></p>-->
<li><strong>Location:</strong> BCEC and beyond
<li><strong>Sign up:</strong> Contact <a href="mailto:info@fsf.org">info@fsf.org</a></li>
</ul>
-<hr>
+<hr>
<h2 id="dinner">Diversity dinner</h2>
<h3>Hosted by Beth Lynn Eicher</h3>
<p>This is a space for women, nonbinary people and all those who have been traditionally excluded from technological and social causes to feel at home and find ways for people of similar backgrounds to participate. Please RSVP by emailing <a href="campaigns@fsf.org">campaigns@fsf.org</a>, so we can tell the restaurant how many people we expect.</p>
<!--<h2 id="lightning-talks">Lightning Talks</h2>
<h3>SATURDAY 17:15 - 18:00 EDT (21:15 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <div class="field-content"><h4>Lightning talks</h4></div> </div>
<div class="views-field views-field-value-3"> <div class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn</div> </div>
<div class="views-field views-field-value-7"> <div class="field-content"></div> </div>
<div style="clear:both"></div></div> </div>
<div class="views-field views-field-regex-rewrite"> <div class="field-content"><div class="guestspeakers">
-
+
<p>Lightning talks are five-minute presentations given by conference attendees on free software topics they're passionate about.</p>
<p><strong>Participate:</strong> Have your five-minute talk streamed at LibrePlanet 2022: Living Liberation!</p>
<p><strong>Upload your <a href="https://libreplanet.org/wiki/Video_upload_instructions">lightning talk now.</a></strong></p>
-
+
</div></div> </div> </td>
</tr>
</tbody>
<p>LibrePlanet 2023 will be held at the <strong><a href="https://www.signatureboston.com/bcec/">Boston Convention and Exibition Center (BCEC)</a></strong> located at 415 Summer Street, Boston, MA, 02210. The closest MBTA stop is <a href="https://www.mbta.com/stops/place-wtcst">World Trade Center</a> which can be reached with silver line buses SL1, SL2, and SL3. Follow the "BCEC" signs to get from the stop to the venue. Another option is to take the red line to South Station. From there it is a 12-minute walk to the BCEC.</p>
-<h2 id="lodging">Where to stay</h2>
+<h2 id="lodging">Where to stay</h2>
<h3>Local hosts</h3>
-<p>Do you want to room with like-minded individuals? Do you want to host a LibrePlanet attendee or speaker? The <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2023/Accommodations">accommodations section on the LibrePlanet wiki</a> is your place to let others know.</p>
+<p>Do you want to room with like-minded individuals? Do you want to host a LibrePlanet attendee or speaker? The <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2023/Accommodations">accommodations section on the LibrePlanet wiki</a> is your place to let others know.</p>
<h3>Hostels</h3>
<p>Prices range from $ (cheap) to $$ (medium).</p>
<ul>
- <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Close to the FSF's office)</a> ($)</li>
+ <li><a href="https://www.hiusa.org/hostels/massachusetts/boston/boston">HI Boston Hostel (Close to the FSF's office)</a> ($)</li>
<li><a href="https://www.foundhotels.com/cities/boston/">Found Hotel</a> ($$)</li>
-
+
<li>Other hostels a little farther out can be found at <a href="https://www.hostelworld.com/search?search_keywords=Boston,%20USA&country=USA&city=Boston&date_from=2023-03-14&date_to=2023-03-15&number_of_guests=1">HostelWorld</a></li>
</ul>
-<h3>Hotels</h3>
+<h3>Hotels</h3>
<p>Prices range from $$ (medium) to $$$ (pricey).</p>
-The hotels closest to the BCEC are:
+The hotels closest to the BCEC are:
<ul>
-<li><a href="https://www.omnihotels.com/hotels/boston-seaport?utm_campaign=omni_ohr_bossea_all_x_br_prop_boston_en_exact_us&utm_content=58700005789226829&utm_medium=cpc&utm_source=bing&utm_term=43700066250477585&&msclkid=980416cba8c11b2b03d2752fa5c36b48&utm_source=bing&utm_medium=cpc&utm_campaign=omni_ohr_bossea_all_x_br_prop_boston_en_exact_us&utm_term=omni%20hotel%20seaport&utm_content=all_x_br_prop_boston_en_leisure_omni&gclid=980416cba8c11b2b03d2752fa5c36b48&gclsrc=3p.ds">Omni Hotel at the Seaport</a> ($$$)</li>
+<li><a href="https://www.omnihotels.com/hotels/boston-seaport?utm_campaign=omni_ohr_bossea_all_x_br_prop_boston_en_exact_us&utm_content=58700005789226829&utm_medium=cpc&utm_source=bing&utm_term=43700066250477585&&msclkid=980416cba8c11b2b03d2752fa5c36b48&utm_source=bing&utm_medium=cpc&utm_campaign=omni_ohr_bossea_all_x_br_prop_boston_en_exact_us&utm_term=omni%20hotel%20seaport&utm_content=all_x_br_prop_boston_en_leisure_omni&gclid=980416cba8c11b2b03d2752fa5c36b48&gclsrc=3p.ds">Omni Hotel at the Seaport</a> ($$$)</li>
<li><a href="https://www.marriott.com/en-us/hotels/bosow-the-westin-boston-seaport-district/overview/">The Westin Boston Seaport District</a> ($$$)</li>
-<li><a href="https://www.marriott.com/en-us/hotels/bosal-aloft-boston-seaport-district/overview/?scid=e98c0b2c-c563-49a7-bf94-25077ebbd65e&gclid=cfa63e6779471263545d5d83753d3fbc&gclsrc=3p.ds">Aloft Boston Seaport</a> ($$$)</li>
+<li><a href="https://www.marriott.com/en-us/hotels/bosal-aloft-boston-seaport-district/overview/?scid=e98c0b2c-c563-49a7-bf94-25077ebbd65e&gclid=cfa63e6779471263545d5d83753d3fbc&gclsrc=3p.ds">Aloft Boston Seaport</a> ($$$)</li>
<li><a href="https://www.marriott.com/en-us/hotels/bosel-element-boston-seaport-district/photos/">Element Boston Seaport</a> ($$$)</li>
</ul>
-Slightly farther away are:
+Slightly farther away are:
<ul>
<li><a href="https://www.loewshotels.com/Boston-Hotel">Loew's hotel</a> The gateway between Back Bay, South End and key city attractions - ($$)</li>
<li><a href="https://www.marriott.com/hotels/travel/bosbo-sheraton-boston-hotel/">The Sheraton</a> - Contemporary hotel (Marriott chain), located centrally ($$)</li>
<li><a href="https://bostonparkplaza.reztrip.com/classic/en/special_offer?action=show&controller=landings&locale=en&rate_code%5B%5D=SHOSP&rate_code%5B%5D=SHOSP&starting_page=special_offer&vr=3">Boston Park Plaza</a> price varies ($$$)</li>
</ul>
-<p>
+<p>
<h2>Transportation</h2>
<p>The easiest way to get around Boston/Cambridge is to use the <a href="http://www.mbta.com">MBTA</a>. Passes can be purchased with cash or credit/debit cards in stations. </p>
<li>Cabs are located all over the city, and at the airport and major subway stations.</li>
<li>The <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=BLUE">Blue Line</a> is a train, with a shuttle bus from Logan Airport to the Airport MBTA stop; the <a href="http://www.mbta.com/schedules_and_maps/subway/lines/?route=SILVER">Silver Line</a> is an expedited bus. The MBTA website provides a very <a href="http://www.mbta.com/riding_the_t/logan/">helpful page</a> on how to navigate via the Silver Line and Blue Line from the airport.</li>
</ul>
-<p>
+<p>
<h3 id="getting-around"> Getting Around </h3>
<!-- <h4 id="getting-around">Getting to LibrePlanet at the Back Bay Events Center</h4> -->
<!-- <li><a href= " https://www.100clarendon.com/rates.html">100 Clarendon St </a> - Up to 1 Hour $12.00, 1-2 Hours $22.00, 2 Hours to 24 Hours $40.00 </li></ul> -->
<!-- The Back Bay Events Center is offering a discounted parking rate for the garage @ 100 Clarendon. Bring your parking ticket with you and hav a BBEC representative stamp your ticket to receive the discount. -->
- <h4>Parking at the BCEC</h4>
- Parking at the venue costs $25.
+ <h4>Parking at the BCEC</h4>
+ Parking at the venue costs $25.
<h4>Downtown/Near FSF office</h4>
</ul>
<h1 id="eating">Where to Eat</h1>
-
+
<h2>Seaport</h2>
-
+
<p>Check out the <a href="http://s3.amazonaws.com/signatureboston/documents/2021-BCEC_dining_ent_map_11X17_Q4.pdf ">BCEC's restaurant map</a>, which includes restaurants, around the Boston Convention and Exhibition Center and surrounding Seaport District neighborhood.</p>
-
+
<h2>Chinatown</h2>
<ul>
<li><a href="https://www.lifealive.com/"> Life Alive:</a> Vegan food - ($$)</li>
</ol>
-
+
<!--#include virtual="/2023/includes/footer.html"-->
<!--#include virtual="/2023/includes/common_js.html"-->
- <!--pagestart-->
-
+ <!--pagestart-->
+
<div class="view-content">
<h3>Keynote Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6315">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6315">Sunday 17:20 - 18:05 EDT (21:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/liz-keynote.jpg">
<h2>Elizabeth Chamberlain</h2></div>
<div class="webform-html-textarea"><p>Dr. Elizabeth Chamberlain is Director of Sustainability at iFixit, which is the free repair manual for everything, with over 90,000 guides for fixing everything from tractors to toasters. Liz advocates for the Right to Repair around the world, supporting lawmakers, conducting repair research, and working to make sure environmental standards reflect repair best practices. Her writing on repair has been published in the Wall Street Journal, Wired, and The Atlantic.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-2 views-row-even views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6272">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6272">Saturday 11:55 - 12:40 EDT (15:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/erin-glass-dog.JPG">
<h2>Erin Rose Glass</h2></div>
<div class="webform-html-textarea"><p>Erin Rose Glass is a researcher and educator who has worked across universities, community colleges, academic libraries, and industry to promote technical literacy focused on ethics, user governance, and community values. She has co-founded a variety of community-driven ed tech initiatives that center ethics and user freedom, including Social Paper, a platform for socializing student writing funded by the National Endowment for the Humanities, and KNIT, a digital commons shared between UC San Diego and the San Diego Community College District. Her research publications focus on the intellectual and political stakes of digital infrastructure related to education and research, including her dissertation, Software of the Oppressed: Reprogramming the Invisible Discipline, which examines the history of ed tech in higher education through Paulo Freire’s philosophy of critical pedagogy. More recently, she led the Developer Education team at DigitalOcean before joining Chainguard, a start up focused on software supply chain security. She lives in California with her family and pack of fluffy creatures, big and small.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<h3>Speakers</h3>
<div class="views-row views-row-1 views-row-odd views-row-first">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6206">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6206">Sunday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/icon.png">
<h2>Tomat0</h2></div>
<div class="webform-html-textarea"><p>For the past four years, I’ve been involved in various initiatives to help grow the Fediverse, including the Copyleft Curator newsletter and The Open Web Project. During that time, I’ve gotten deeply involved in the community: experimenting with strategies, identifying the biggest problems facing ecosystem, getting a feel for the culture, and looking at what potential the federated and free-software model provides for actually affecting change. I’m very deeply interested in the intersection between technological design and human behavior, and how to best solve problems creatively and autonomously, in a way which empowers human beings as opposed to binding them.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-4 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6143">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6143">Sunday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- online
+<i class="glyphicon glyphicon-home"></i>: Saturn -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Nancy Anthracite</h2></div>
<div class="webform-html-textarea"><p>Nancy Anthracite, MD is an internal medicine physician working in an occupational health clinic as her occupation and president of WorldVistA as her volunteer avocation. She became aware of VistA and devoted to keeping VistA free software since 1999 and is surrounded by like-minded volunteers with the same goal. She became CMO of WorldVistA in 2007 and president in 2009.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-5 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6138">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6138">Saturday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/bandali.jpg">
<h2>Amin Bandali</h2></div>
<div class="webform-html-textarea"><p><a href="https://kelar.org/~bandali/">bandali</a> is a computing scientist and free/libre software activist who <a href="https://www.gnu.org/people/people.html#bandali">wears a few hats</a> around the GNU project as a GNU maintainer, a Savannah hacker/admin, and an assistant GNUisance among others, and also volunteers with the Free Software Foundation.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-7 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6230">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6230">Saturday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<h2>Mikalai Birukou</h2></div>
<div class="webform-html-textarea"><p>Mikalai Birukou is an expert in decentralized, privacy-by-design technologies and is building the 3NWeb protocols to create a better and safer digital world. Mikalai's is passionate about creating digital spaces where every person is in control of their own life.</p><br />
<p>Sean O’Brien is a lecturer in Cybersecurity at Yale Law School, where he founded the Privacy Lab initiative. Sean is a longtime supporter of free software and has worked on various projects, founding the PrivacySafe project to build local-first software and privacy-by-design networks using the 3NWeb protocols. He is Open Source Lead at Tari Labs & Yat Labs, was the founding Head Tutor at Oxford University Cyber Security for Business Leaders, and is Security Advisor for Panquake.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-8 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6215">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6215">Saturday 10:00 - 10:45 EDT (14:00 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<h2>V. Alex Brennen</h2></div>
<div class="webform-html-textarea"><p>Alex is a free software developer that has been writing GPL licensed software for more than 25 years. Most of his development work was in academic environments. However, he also developed cryptography software as part of the Cypherpunks movement in the 1990's and has extensive experience in computer security. Alex has been a systems administrator at MIT for over 15 years working with MIT Libraries and groups including CSAIL and W3C. Alex also helped start ProtonMail, serving as one of its first ten employees and its first infrastructure administrator and security officer. He developed an interest in libre hardware while working on autonomous robotic drone hardware at CSAIL.</p><br />
<p>Kurt Keville is an MIT research scientist, systems administrator, and cluster manager at the MIT Office of Research Computing and Data (ORCD). Kurt has a master's degree in electrical engineering from MIT. He previously worked on low power and performance per watt dense super computing clusters. He supports a number of packages on Supercloud. He also maintains the MIT Debian RISC-V build farm. He is a frequent speaker at the Boston Linux User's group on the topics of libre software, emerging hardware, and GPU based super computing and CUDA programming.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-9 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6197">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6197">Sunday 10:55 - 11:40 EDT (14:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Denis Carikli</h2></div>
<div class="webform-html-textarea"><p>GNUtoo has been contributing to various free software projects that either support computers that boot with only free software (like Coreboot, Guix, Libreboot, Linux, Linux-libre, Parabola, Trisquel, u-boot) or that try to (but didn't succeed yet) to support such computers (Replicant). GNUtoo also wrote extensive documentation on the topic in the Libreplanet Wiki or in an article about the Management Engine.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-10 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6203">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6203">Sunday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- online
+<i class="glyphicon glyphicon-home"></i>: Saturn -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Adrian.jpg">
<h2>Adrian Cochrane</h2></div>
<div class="webform-html-textarea"><p>Adrian is passionate about helping people be empowered by computers through custom software development work. It’s not enough for Adrian to create something that works - he must know why it works! Adrian graduated from Victoria University of Wellington in 2017 with a degree in Computer Science. His education in computing began long before that, having learned his first programming language at age 10. For his hobbies Adrian enjoys illustrating how software can be better through his personal projects, reviewing audioshows, and is always keen for a game of Catan.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-11 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6099">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6099">Saturday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/sick.codes_.3000px.png">
<h2>Sick Codes</h2></div>
<div class="webform-html-textarea"><p>Sick Codes is an Australian hacker, who resides somewhere in Asia. Sick Codes has previously published research on John Deere tractors, TCL Smart TVs, ice cream machines and most major social media/software websites that we use every day. He loves motorcycles, going fast, discovering vulnerabilities and capitalizing on 0days. His other interests include maintaining software projects, free software, reverse engineering, and standing up for other researchers.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-12 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6119">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6119">Sunday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Agaric.jpg">
<h2>Agaric Technology Collective</h2></div>
<div class="webform-html-textarea"><p>When building platforms on free software we strive to use the Drutopia.org model of the more clients we have paying, the lower the cost or the modifications become free to other Drutopia members.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-13 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6226">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6226">Sunday 10:55 - 11:40 EDT (14:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Dr. William Cooper Davidon</h2></div>
-<div class="webform-html-textarea"></div>
-</div></span> </div>
+<div class="webform-html-textarea"></div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-14 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6167">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6167">Saturday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/eu_150x150.jpg">
<h2>Silvio Tamaso D'Onofrio</h2></div>
<div class="webform-html-textarea"><p>Silvio Tamaso D’Onofrio holds a D.Sc in Social History from the University of São Paulo, Brazil. He was an Associate Professor in a higher education institution and currently heads REGIONEM, a research group dedicated to the study of material, intellectual and spiritual elements linked to the notions of space, area and region, based in São Paulo. Focusing also on digital humanities, dr. D’Onofrio’s peer-reviewed articles that appeared in journals worldwide. He has also published book chapters in recognized publications and he serves as a reviewer and member of editorial boards for international academic and scientific publications.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-15 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6176">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6176">Saturday 10:00 - 10:45 EDT (14:00 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<h2>Julian Daich</h2></div>
<div class="webform-html-textarea"><p>Julian Daich has a background in biophysics with experience developing biomedical technology in academic and industrial environments. He has been working during the last years at LINDS, a 501(c)(3) non profit, in the developing of biomedical technology to be released under free licenses.<br /><br />
Between other projects, he participated in the founding of Cyclicka in Spain, Fee Computer Labs in the Boston area and TRASHWARE-TLV in Israel oriented to train people in the free use of software and hardware.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-16 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6151">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6151">Sunday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- online
+<i class="glyphicon glyphicon-home"></i>: Saturn -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<h2>Harm de Vries</h2></div>
<div class="webform-html-textarea"><p>Harm de Vries is a staff research scientist at ServiceNow. </p><br />
<p>Leandro von Werra is a machine learning engineer at HuggingFace.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-23 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6114">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6114">Saturday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/portrait-Angie-2021.jpg">
<h2>Angie Gaudion</h2></div>
<div class="webform-html-textarea"><p>In charge of public relationship at Framasoft Association for four years, Angie is also coordinator of the Collectif des Hébergeurs Alternatifs Transparents Ouverts Neutres et Solidaires (CHATONS). Previously digital mediator and librarian, she has been active for several years in many associations for the promotion of free culture and knowledge commons.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-24 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6228">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6228">Sunday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Ahmed.jpeg">
<h2>Ahmed Ghappour</h2></div>
<div class="webform-html-textarea"><p>Ahmed Ghappour is General Counsel at Nym Technologies and Professor at Boston University, where he teaches Cybersecurity Law, Privacy Law, and Criminal Law. Before his current roles, Ghappour built law clinics at UT Austin and UC Hastings to litigate national security and hacking cases. He litigated the first criminal trial to challenge bulk metadata collection by the NSA, sued the CIA on behalf of the Freedom of the Press Foundation, and represented digital causes célèbres such as Chelsea Manning, Ross Ulbricht, and Barrett Brown. Before that, Ghappour represented Guantanamo prisoners at Reprieve UK, and litigated patent cases with a top law firm. In a prior life, Ghappour was a software engineer at Silicon Graphics, Inc. and Sun Microsystems. He’s an alum of NYU Law and Rutgers Engineering.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-25 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6128">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6128">Saturday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/3f7dc2ae-4994-43d8-b3e2-63706b03d7c8-bWFpbi1uLW4tMC0wLTAtODAwLTEyMDA.jpg">
<h2>James Gregora</h2></div>
<div class="webform-html-textarea"><p>James Gregora is a 3rd year law student at Rutgers with an interest in intellectual property and criminal justice issues. He has a B.A. in Philosophy from Swarthmore College, and an M.A. in Philosophy from Brandeis University.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-26 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6162">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6162">Sunday 11:55 - 12:40 EDT (15:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/weiming.png">
<h2>Weiming Hu</h2></div>
<div class="webform-html-textarea"><p>My name is Weiming Hu. I am currently a machine learning researcher at Scripps Institution of Oceanography, University of California, San Diego. I have always been a fervent supporter of the free software movement. I encourage my students to use and learn free software and free tools and I try my best to also incorporate concepts and applications of free software in my teaching. I was the recipient of the scholarship for the LibrePlanet 2020 conference but I was not able to attend the conference due to COVID-19. I look forward to this year's in-person conference.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-27 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6218">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6218">Sunday 10:00 - 10:45 EDT (14:00 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/IMG_20210209_173811.jpg">
<h2>Clinton Ignatov</h2></div>
<div class="webform-html-textarea"><p>I've been using GNU/Linux as my daily-driver for twenty years. In that time I've lived through and written about the madness of the post-dotcom bubble burst, the rise of so-called smartphones, the recentralization of the net via social media, and the collision of old and new media today. I've spent five years deeply studying Canadian media theorist Marshall McLuhan, and have become recognized for my scholarship and participation in the field of Media Ecology.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-28 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6208">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6208">Sunday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- online
+<i class="glyphicon glyphicon-home"></i>: Saturn -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Ian Kelling</h2></div>
<div class="webform-html-textarea"><p>Ian was an FSF volunteer before joining the FSF in May 2017 as a senior systems administrator. He's also a free software developer and has contributed to various projects including GNU Emacs.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-29 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6165">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6165">Saturday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Do Yoon Kim</h2></div>
-<div class="webform-html-textarea"></div>
-</div></span> </div>
+<div class="webform-html-textarea"></div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-30 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6055">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6055">Saturday 10:55 - 11:40 EDT (14:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/MatthiasKirschner-s0t0s0-600x600.jpg">
<h2>Matthias Kirschner</h2></div>
<div class="webform-html-textarea"><p>Matthias Kirschner is president of FSFE. Matthias helps other organizations, companies, and public administrations to understand how they can benefit from free software -- which gives everybody the rights to use, study, share, and improve software -- and how those rights help to support freedom of speech, press, and privacy. He serves on the advisory boards of different free software organizations, has been a consultant for public bodies and other committees, and regularly gives interviews, lectures, or participates in panel discussions about software freedom and the technical distribution of power in a democratic society.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-31 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6282">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6282">Saturday 17:20 - 18:05 EDT (21:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Geoffrey Knauth</h2></div>
-<div class="webform-html-textarea"></div>
-</div></span> </div>
+<div class="webform-html-textarea"></div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-32 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6156">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6156">Sunday 14:30 - 15:15 EDT (18:30 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/cracha.jpg">
<h2>Flávio Lisboa</h2></div>
<div class="webform-html-textarea"><p>Master in Studies of Science, Technology and Society (UTFPR). System development analyst in SERPRO, a state-owned IT enterprise. Professor of disciplines on software development. Author of "PHP Web Development with Laminas". Frequent speaker at the PHP Conference Brazil.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-33 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6150">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6150">Sunday 13:35 - 14:20 EDT (17:35 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/tristan-rayner.jpg">
<h2>Rayner Lucas</h2></div>
<div class="webform-html-textarea"><p>Rayner Lucas is a freelance software developer based in London, UK. Tristan Miller is a computational linguist at the Austrian Research Institute for Artificial Intelligence (OFAI). Both are members of the Usenet Big-8 Management Board, an advisory committee that assists with the creation and administration of discussion groups in Usenet's "Big 8" international group hierarchies.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-34 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6154">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6154">Sunday 10:55 - 11:40 EDT (14:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/yo.jpg">
<h2>Sebastian Marchano</h2></div>
<div class="webform-html-textarea"><p>I'm core developer of GNU Taler, working mainly on the Wallet. Living in Argentina, father of two, like to play chess and drink mate.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-35 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6141">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6141">Sunday 10:00 - 10:45 EDT (14:00 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/anaximender.jpg">
<h2>Anaximander Miletus</h2></div>
<div class="webform-html-textarea"><p>Anaximander c. 610 – c. 546 BC) was a pre-Socratic Greek philosopher who lived in Miletus, a city of Ionia (in modern-day Turkey). He belonged to the Milesian school and learned the teachings of his master Thales. He succeeded Thales and became the second master of that school where he counted Anaximenes and, arguably, Pythagoras amongst his pupils. He created a map of the world that contributed greatly to the advancement of geography. He was also involved in the politics of Miletus and was sent as a leader to one of its colonies.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-36 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6225">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6225">Saturday 10:55 - 11:40 EDT (14:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Benson Muite</h2></div>
<div class="webform-html-textarea"><p>Benson Muite is a software developer based in Nairobi, Kenya. He is interested in free software and high-performance computing.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-37 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6124">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6124">Saturday 10:00 - 10:45 EDT (14:00 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerblock">
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Eric Myhre</h2></div>
-<div class="webform-html-textarea"></div>
-</div></span> </div>
+<div class="webform-html-textarea"></div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-38 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6160">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6160">Sunday 11:55 - 12:40 EDT (15:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/20221026_223348.jpg">
<h2>Lori Nagel</h2></div>
<div class="webform-html-textarea"><p>Lori Angela Nagel has been a long-time free software supporter and activist, and has been involved with the FSF as an associate member since 2005.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-39 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6169">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6169">Saturday 10:55 - 11:40 EDT (14:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/IMG_0701_c_sm.jpg">
<h2>Nikolas Nyby</h2></div>
<div class="webform-html-textarea"><p>I am currently a software developer at Columbia University's Center for Teaching and Learning. I've been enamored by the free software world from an early age. I believe that the only path forward for technology exists outside of proprietary interests. I love learning how things work, and I'm a lifelong Emacs stan.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-40 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6195">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6195">Sunday 10:00 - 10:45 EDT (14:00 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/foto.jpg">
<h2>Libor Polčák</h2></div>
<div class="webform-html-textarea"><p>Libor Polcák is an assistant professor and researcher on the Faculty of Information Technology at the Brno University of Technology with a focus on security and data protection in networking and on the Web. His area of interests include device identification, network identities, privacy, and data protection. He finished his Ph.D. studies on the Faculty of Information Technology, Brno University of Technology in 2017. In 2018, he received the Czech Minister of the Interior award for outstanding results in the area of security research. Since 2022, he is a member in the Pool of Experts of the European Data Protection Board. He works on the JShelter Webextension.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-41 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6178">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6178">Saturday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Yoni Rabkin</h2></div>
<div class="webform-html-textarea"><p>Yoni Rabkin is a parent, programmer and paralegal who studied computer science in Israel, worked in the medical devices industry, and now writes custom software for a living. He believes that everyone should contribute something positive to society, commensurate with their personal strengths. Yoni will be speaking as a volunteer of the Licensing and Compliance Lab.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-42 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6133">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6133">Sunday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span>
</div>
<h2>Paul Roberts</h2></div>
<div class="webform-html-textarea"><p>Paul Roberts is the founder of Secure Repairs (securepairs.org), an independent group of information security and information technology professionals who support the right to repair. Paul is a seasoned reporter, editor and industry analyst with more than 15 years experience covering the information technology security space. His writing about cybersecurity has appeared in publications including The Christian Science Monitor, MIT Technology Review, The Economist Intelligence Unit, CIO Magazine, ZDNet and Fortune Small Business. He has appeared on NPR’s Marketplace Tech Report, KPCC AirTalk, Fox News Tech Take, Al Jazeera and The Oprah Show.</p><br />
<p>Kevin Kenney is a Right to Repair advocate. He wrote the first Right to Repair bill for agriculture in the Nebraska legislature, in 2015, titled, "Fair Repair Act." His Right to Repair work is published in Bloomberg, Vice.com, and Reader's Digest. Today, he is working to help farmers get repair help for their tractors. He is experienced in all aspects of farm operations and is familiar with all popular tractors, sprayers, and combine makes. He is a respected innovator in equipment design, with the skills necessary to design, reverse-engineer, and modify multiple agricultural equipment systems. He spends most of his free time with carpentry, mechanical, and free software projects, as well as with hunting and many other outdoor activities.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-43 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6161">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6161">Sunday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/1673536787945.jpeg">
<h2>Rubén Rodríguez Pérez</h2></div>
<div class="webform-html-textarea"><p>Spaniard, software engineer, photographer, GNU hacker, guitar player, ape descendant. Rubén started his career developing free software for research centers and universities, then founded the Trisquel GNU/Linux distribution project and other nonprofits. He has contributed to the freedom and privacy oriented Web tools GNU IceCat, GNU LibreJS and JShelter, and has worked in the One Laptop Per Child program and as a senior systems administrator and CTO of the Free Software Foundation. He likes dogs and paragliding, and dislikes writing about himself.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-44 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6134">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6134">Saturday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
+<i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Srish.jpeg">
<h2>Srishti Sethi</h2></div>
<div class="webform-html-textarea"><p>Srishti is a Senior Developer Advocate at the Wikimedia Foundation, a non-profit behind Wikipedia and its sister projects. In her role, she supports the technical volunteer community through several projects. In the past decade, she has been a part of several free and open-source projects and communities in the education space in various roles (software engineer, researcher, educator, and community manager). She also recently co-founded Unstructured Studio, an educational non-profit engaging children from underserved communities in India in creative learning experiences. Srishti holds a Master's in Media Arts and Sciences from the Massachusetts Institute of Technology.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-45 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6210">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6210">Sunday 11:55 - 12:40 EDT (15:55 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/me3.jpg">
<h2>Kevin Shockey</h2></div>
<div class="webform-html-textarea"><p>Hi, I’m Farmer Kevin. I live in Puerto Rico. Proprietary software rules the island. Mine and others past efforts to promote free software were thwarted by FUD and attrition. When climbing the technology ladder here, most advocates end up working for and on proprietary software. Until hurricane Maria hit the island in 2017, I had retired from technology altogether. There were too few supporters of free software to warrant a Sisyphean effort to counteract high paying jobs using proprietary software. Since Maria, I’ve returned to the fray, but with a new focus on surviving disasters, climate change, and food shortages.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-46 views-row-even">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6207">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6207">Saturday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<h2>Joseph Turner</h2></div>
<div class="webform-html-textarea"><p>Hello! I'm Joseph Turner. I started using GNU/Linux and learning to program after I graduated college in 2019. Since then, I have worked as a project manager and developer with the <a href="https://ushin.org/">USHIN</a> team. I enjoy playing music (fiddle, cello, piano, anything that makes noise), practicing aikido, caring for animals, gardening, and chopping wood for the fireplace in my cabin in the woods. I am excited to get more actively involved with the free software and Emacs communities as we explore deliberative software.<br />
</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-47 views-row-odd">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6107">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6107">Saturday 15:25 - 16:10 EDT (19:25 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
+<i class="glyphicon glyphicon-home"></i>: Saturn -- in-person
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/logo.png">
<h2>Anthony Wang</h2></div>
<div class="webform-html-textarea"><p>Anthony Wang is an MIT student and decentralized web developer. He is a maintainer for the ForgeFed protocol, Forgejo, Fediverse Enhancement Proposals, and a few other decentralized web projects.</p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
<div class="views-row views-row-48 views-row-even views-row-last">
-
+
<div class="views-field views-field-nothing-2"> <span class="field-content"><hr id="6142">
<div class="talkblock" style="clear:both">
<div class="talkblockheader">
<i class="glyphicon glyphicon-calendar"></i>: <a class="lpcalendarlink" href="/2023/program/#6142">Sunday 16:20 - 17:05 EDT (20:20 UTC)</a>
</br>
-<i class="glyphicon glyphicon-home"></i>: Neptune -- online
+<i class="glyphicon glyphicon-home"></i>: Neptune -- online
</br>
<i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span>
</div>
<div class="speakerheader"><img class="speakerpic" src="https://my.fsf.org/sites/default/files/webform/Aaron-Wolf-headshot.jpg">
<h2>Aaron Wolf</h2></div>
<div class="webform-html-textarea"><p>Co-founder of Snowdrift.coop (still struggling and still working on it!), music teacher and musician, conscious FLO activist. My website: <a href="https://wolftune.com">https://wolftune.com</a></p><br />
-</div>
-</div></span> </div>
+</div>
+</div></span> </div>
<div class="views-field views-field-value-11"> <span class="field-content"></span> </div> </div>
</div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
- <!--pagestart-->
-
-
-
+ <!--pagestart-->
+
+
+
<div class="view-content">
<div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Saturday">Saturday</div></div><div class="view-grouping-content"> <h3>09:45 - 10:00 EDT (13:45 UTC) - Welcome address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6275"><div id="6275"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
by FSF
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6276"><div id="6276"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
by FSF
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6285"><div id="6285"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
by FSF
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:00 - 10:45 EDT (14:00 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/freedom-hardware-current-state-and-forward-looking-statements/"><div id="6215"><div class="webform-html-textarea"><p>Freedom hardware: Current state and forward looking statements</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
V. Alex Brennen
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Kurt Keville<br>
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-licensing-of-trademarks-a-tool-to-expand-the-scope-of-free-licenses-to-a-wider-scope-of-works-including-physical-objects/"><div id="6176"><div class="webform-html-textarea"><p>Free licensing of trademarks. A tool to expand the scope of free licenses to a wider scope of works. Including physical objects.</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Julian.JPG">
Julian Daich
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6124"><div id="6124"><div class="webform-html-textarea"><p>Warpforge -- a tool for reproducible, hermetic builds</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Eric Myhre
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Eric Evenchick<br>
</table>
<h3>11:25 - 12:10 EDT (15:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/3demos-a-collaborative-visual-calculus-system/"><div id="6169"><div class="webform-html-textarea"><p>3Demos: A collaborative visual calculus system</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_0701_c_sm.jpg">
Nikolas Nyby
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/book-reading-ada-zangemann-a-tale-of-software-skateboards-and-raspberry-ice-cream/"><div id="6055"><div class="webform-html-textarea"><p>Book reading: Ada & Zangemann - A tale of software, skateboards, and raspberry ice cream</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/MatthiasKirschner-s0t0s0-600x600.jpg">
Matthias Kirschner
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6225"><div id="6225"><div class="webform-html-textarea"><p>Libre software in Africa</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Benson Muite
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>12:25 - 13:10 EDT (16:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/education-and-the-future-of-software-freedom/"><div id="6272"><div class="webform-html-textarea"><p>Education and the future of software freedom</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/erin-glass-dog.JPG">
Erin Rose Glass
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:10 - 14:05 EDT (17:10 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6280"><div id="6280"><div class="webform-html-textarea"><p>Break</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
LibrePlanet 2023
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>14:05 - 14:50 EDT (18:05 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-for-non-developers/"><div id="6128"><div class="webform-html-textarea"><p>Free software for non-developers</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/3f7dc2ae-4994-43d8-b3e2-63706b03d7c8-bWFpbi1uLW4tMC0wLTAtODAwLTEyMDA.jpg">
James Gregora
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/a-practical-demonstration-of-least-authority-services-via-free-software/"><div id="6230"><div class="webform-html-textarea"><p>A practical demonstration of least authority services via free software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/birukou-sean.png">
Mikalai Birukou
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Sean O'Brien<br>
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/chatons-a-collective-for-french-speaking-ethical-hosters/"><div id="6114"><div class="webform-html-textarea"><p>CHATONS, a collective for French-speaking ethical hosters</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/portrait-Angie-2021.jpg">
Angie Gaudion
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>15:00 - 15:45 EDT (19:00 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/using-data-to-see-the-impact-of-free-software/"><div id="6165"><div class="webform-html-textarea"><p>Using data to see the impact of free software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Do Yoon Kim
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/lightning-talks-a26f/"><div id="6283"><div class="webform-html-textarea"><p>Lightning talks</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
LibrePlanet 2023
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/cataloguing-challenging-museum-libraries-items/"><div id="6167"><div class="webform-html-textarea"><p>Cataloguing challenging museum-libraries items</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/eu_150x150.jpg">
Silvio Tamaso D'Onofrio
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>15:55 - 16:40 EDT (19:55 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-state-of-free-software-in-farming-food-agriculture/"><div id="6099"><div class="webform-html-textarea"><p>The state of free software in farming, food & agriculture</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/sick.codes_.3000px.png">
Sick Codes
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/towards-federated-forges/"><div id="6107"><div class="webform-html-textarea"><p>Towards federated forges</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Anthony Wang
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/volunteering-for-the-licensing-and-compliance-lab/"><div id="6178"><div class="webform-html-textarea"><p>Volunteering for the Licensing and Compliance Lab</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Yoni Rabkin
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
- Ineiev
- Panos Alevropoulos
- Paulius Galubickas
+
+ Ineiev
+ Panos Alevropoulos
+ Paulius Galubickas
</div></span> </div> </td>
</table>
<h3>16:50 - 17:35 EDT (20:50 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/understanding-developer-advocacy-in-wikipedia-s-technology-landscape/"><div id="6134"><div class="webform-html-textarea"><p>Understanding developer advocacy in Wikipedia's technology landscape</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Srish.jpeg">
Srishti Sethi
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/emacs-for-p2p-deliberation/"><div id="6207"><div class="webform-html-textarea"><p>Emacs for P2P Deliberation</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/joseph.png">
Joseph Turner
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/what-s-new-in-jami/"><div id="6138"><div class="webform-html-textarea"><p>What's new in Jami</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/bandali.jpg">
Amin Bandali
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>17:50 - 18:35 EDT (21:50 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/keynote-by-fsf-awards-ceremony/"><div id="6282"><div class="webform-html-textarea"><p>Keynote by FSF & awards ceremony</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Geoffrey Knauth
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Zoë Kooyman<br>
</table>
<h3>18:35 - 18:50 EDT (22:35 UTC) - Closing remarks</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6278"><div id="6278"><div class="webform-html-textarea"><p>Closing notes</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
by FSF
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
</div></div><div class="view-grouping"><div class="view-grouping-header"><div id="schedule-Sunday">Sunday</div></div><div class="view-grouping-content"> <h3>09:45 - 10:00 EDT (13:45 UTC) - Welcome address</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6277"><div id="6277"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
by FSF
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6293"><div id="6293"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Miriam Bastian
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6286"><div id="6286"><div class="webform-html-textarea"><p>Welcome address by FSF</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
LibrePlanet 2023
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:00 - 10:45 EDT (14:00 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/topographical-maps-for-all/"><div id="6141"><div class="webform-html-textarea"><p>Topographical maps for all!</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/anaximender.jpg">
Anaximander Miletus
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-long-history-of-metrics-before-and-after-cybernetics/"><div id="6218"><div class="webform-html-textarea"><p>The long history of metrics before and after cybernetics</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/IMG_20210209_173811.jpg">
Clinton Ignatov
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/jshelter-for-browsing-securely/"><div id="6195"><div class="webform-html-textarea"><p>JShelter for browsing securely</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/foto.jpg">
Libor Polčák
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>10:55 - 11:40 EDT (14:55 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/safety-critical-software-certification-and-why-free-software/"><div id="6226"><div class="webform-html-textarea"><p>Safety-critical software certification and why free software<br />
might be the best solution</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Dr. William Cooper Davidon
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-libre-payment-system/"><div id="6154"><div class="webform-html-textarea"><p>Free/libre payment system</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/yo.jpg">
Sebastian Marchano
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/taking-control-over-the-means-of-production-free-software-boot/"><div id="6197"><div class="webform-html-textarea"><p>Taking control over the means of production: Free software boot</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Denis Carikli
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>11:55 - 12:40 EDT (15:55 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/questions-are-the-answer-how-to-have-deeper-conversations-with-anyone-about-free-software-philosophy/"><div id="6160"><div class="webform-html-textarea"><p>Questions are the answer, how to have deeper conversations with anyone about free software philosophy.</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/20221026_223348.jpg">
Lori Nagel
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6210"><div id="6210"><div class="webform-html-textarea"><p>Life 0.01 - Free software for the end times</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/me3.jpg">
Kevin Shockey
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/free-software-for-environmental-sciences/"><div id="6162"><div class="webform-html-textarea"><p>Free software for environmental sciences</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/weiming.png">
Weiming Hu
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>12:40 - 13:35 EDT (16:40 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6281"><div id="6281"><div class="webform-html-textarea"><p>Break</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: </span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
LibrePlanet 2023
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>13:35 - 14:20 EDT (17:35 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-nym-mixnet-free-software-to-end-mass-surveillance/"><div id="6228"><div class="webform-html-textarea"><p>The Nym mixnet: Free software to end mass surveillance</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack8">Security</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Ahmed.jpeg">
Ahmed Ghappour
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6151"><div id="6151"><div class="webform-html-textarea"><p>BigCode: Open and responsible research on Code Generating AI Systems</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack1">Licensing</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Harm-Leandro.jpg">
Harm de Vries
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Leandro von Werra<br>
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/federation-and-moderation-usenet-as-the-original-decentralized-social-network/"><div id="6150"><div class="webform-html-textarea"><p>Federation and moderation: Usenet as the original decentralized social network</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/tristan-rayner.jpg">
Rayner Lucas
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Tristan Miller<br>
</table>
<h3>14:30 - 15:15 EDT (18:30 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/problems-in-the-fediverse-organization/"><div id="6206"><div class="webform-html-textarea"><p>Problems in the fediverse: Organization</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/icon.png">
Tomat0
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6143"><div id="6143"><div class="webform-html-textarea"><p>WorldVistA EHR version of the Department of Veterans Affairs Electronic Health Record</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Nancy Anthracite
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-legacy-of-free-software-in-the-brazilian-government/"><div id="6156"><div class="webform-html-textarea"><p>The legacy of free software in the Brazilian government</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/cracha.jpg">
Flávio Lisboa
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>15:25 - 16:10 EDT (19:25 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/trisquel-gnu-linux-new-architectures-and-other-challenges/"><div id="6161"><div class="webform-html-textarea"><p>Trisquel GNU/Linux, new architectures and other challenges</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/1673536787945.jpeg">
Rubén Rodríguez Pérez
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6203"><div id="6203"><div class="webform-html-textarea"><p>DIY browsers</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack9">Free Software in practice</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Adrian.jpg">
Adrian Cochrane
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/should-developers-get-paid-for-their-work/"><div id="6119"><div class="webform-html-textarea"><p>Should developers get paid for their work?</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack3">Community</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Agaric.jpg">
Agaric Technology Collective
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Chris Thompson<br>
Keegan Rankin<br>
</table>
<h3>16:20 - 17:05 EDT (20:20 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/it-s-time-to-jailbreak-the-farm/"><div id="6133"><div class="webform-html-textarea"><p>It’s time to jailbreak the farm</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/panelRtR.jpg">
Paul Roberts
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Sick Codes<br>
Kevin Kenney<br>
</div></span> </div> </td>
<td class="col-2">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/finding-a-job-while-caring-about-free-software/"><div id="6208"><div class="webform-html-textarea"><p>Finding a job while caring about free software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Saturn -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack4">Social context</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
Ian Kelling
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
+
Rubén Rodríguez Pérez<br>
Yuchen Pei<br>
</div></span> </div> </td>
<td class="col-3 col-last">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/kids-need-to-experience-software-freedom-not-just-the-idea-of-it/"><div id="6142"><div class="webform-html-textarea"><p>Kids need to experience software freedom, not just the idea of it</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Neptune -- online</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack6">Education</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/Aaron-Wolf-headshot.jpg">
Aaron Wolf
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>17:20 - 18:05 EDT (21:20 UTC)</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="https://media.libreplanet.org/u/libreplanet/m/the-future-of-the-right-to-repair-and-free-software/"><div id="6315"><div class="webform-html-textarea"><p>The future of the right to repair and free software</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack12">Keynote</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/liz-keynote.jpg">
Elizabeth Chamberlain
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</table>
<h3>18:05 - 18:20 EDT (22:05 UTC) - Closing remarks</h3>
<table class="views-view-grid cols-3">
-
+
<tbody>
<tr class="row-1 row-first row-last">
<td class="col-1 col-first">
-
+
<div class="views-field views-field-value"> <span class="field-content"><a href="/2023/speakers/#6279"><div id="6279"><div class="webform-html-textarea"><p>Closing notes</p>
-</div></div></a></span> </div>
- <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
- <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
+</div></div></a></span> </div>
+ <div class="views-field views-field-value-3"> <span class="field-content"><i class="glyphicon glyphicon-home"></i>: Jupiter -- in-person</span> </div>
+ <div class="views-field views-field-value-7"> <span class="field-content"><i class="glyphicon glyphicon-road"></i>: <span class="lptrack lptrack2">LibrePlanet special sessions</span></span> </div>
<div class="views-field views-field-value-6"> <span class="field-content"><img class="schedulepic" style="float:left; max-width:23px; max-height:23px; margin-right:5px; border-radius: 5px" src="https://my.fsf.org/sites/default/files/webform/logo.png">
by FSF
-<div style="clear:both"></div></span> </div>
+<div style="clear:both"></div></span> </div>
<div class="views-field views-field-regex-rewrite"> <span class="field-content"><div class="guestspeakers">
-
-
+
+
</div></span> </div> </td>
</tbody>
</table>
</div></div> </div>
-
-
-
-
+
+
+
+
<div class="view-footer">
<!--pageend--> </div>
<h3>Report from LibrePlanet: Charting the Course</h3>
-Read about day one and day two of the conference:
+Read about day one and day two of the conference:
<p><a href="https://www.fsf.org/blogs/community/reporting-back-from-day-one-of-libreplanet-charting-the-course">Reporting back from day one of LibrePlanet: Charting the Course</a></p>
<p><a href="https://www.fsf.org/blogs/community/from-freedom-trail-to-free-boot-and-free-farms-charting-the-course-at-libreplanet-day-2">From Freedom Trail to free boot and free farms: Charting the course at LibrePlanet day two</a></p>
<p>LibrePlanet: Charting the Course was held both <strong>online and in-person</strong> on March 18 and 19, 2023.</p>
<p>LibrePlanet is the annual conference hosted by the Free Software Foundation (FSF). LibrePlanet provides an opportunity for community activists, domain experts, and people seeking solutions for themselves to come together in order to discuss current issues in technology and ethics.</p>
<p>The theme for LibrePlanet 2023 was <strong>"Charting the Course."</strong> The free software movement has produced so much more than just a set of common tools used by millions around the world. It also points the way to a freer and autonomous digital existence for all of us: one where it’s the user and not corporate monopolies that control our ways of communicating, how children are educated, and how we monitor information as crucial as our own health. Ingenuity and moral dedication are two important qualities of the free software movement, and we use these for the benefit of all. This year, LibrePlanet speakers showed ways of progressing the free software community’s understanding of new opportunities and new threats to the movement.</p>
-<p>Together, we have helped ourselves and others find their freedom in the current digital landscape. Now, it’s time for us to lead the way – or <strong>chart a course</strong> – through to full digital freedom.</p>
+<p>Together, we have helped ourselves and others find their freedom in the current digital landscape. Now, it’s time for us to lead the way – or <strong>chart a course</strong> – through to full digital freedom.</p>
</div>
<div class="panel-body">
<p>
- <a target="_blank" href="https://live.fsf.org/stream-room-jupiter-lowres.webm">LP Workshop</a> (480p)</br>
+ <a target="_blank" href="https://live.fsf.org/stream-room-jupiter-lowres.webm">LP Workshop</a> (480p)</br>
<!--
<a target="_blank" href="https://live.fsf.org/stream-room-jupiter-lowres.webm">Jupiter</a> (480p)</br>
<a target="_blank" href="https://live.fsf.org/stream-room-saturn-lowres.webm">Saturn</a> (480p)</br>
<a target="_blank" href="https://live.fsf.org/stream-room-neptune-lowres.webm">Neptune</a> (480p)</br>
- <a target="_blank" href="https://live.fsf.org/libreplanet-workshop-lowres.webm">LP Workshop</a> (480p)</br>
+ <a target="_blank" href="https://live.fsf.org/libreplanet-workshop-lowres.webm">LP Workshop</a> (480p)</br>
-->
</p>
</div>
<li><a href="/2023/safe-space-policy/">Safe Space Policy</a></li>
<li><a href="/2023/sponsors">Sponsors and Exhibitors</a></li>
<!--<li><a href="/2023/volunteer/">Volunteer</a></li>-->
-<li><a href="https://lists.gnu.org/mailman/listinfo/libreplanet-discuss">Join the Discussion List</a></li>
+<li><a href="https://lists.gnu.org/mailman/listinfo/libreplanet-discuss">Join the Discussion List</a></li>
<!-- <li><a href="https://www.fsf.org/about/contact/">Contact Us</a></li> -->
<!--<li><a href="https://www.fsf.org/blogs/community/free-software-awards-recognize-those-who-advance-our-freedom-by-october-28th">FSF Award Nomination</a></li>-->
<!-- <ul> -->
<!-- <li></li> -->
<!-- </ul> -->
-
+
</ul>
<li><strong>04/18/2023</strong> <a href="https://www.fsf.org/blogs/community/watch-the-libreplanet-charting-the-course-videos-on-gnu-mediagoblin-and-peertube">Watch the LibrePlanet: Charting the Course videos on GNU MediaGoblin and PeerTube</a></li>
<li><strong>02/21/2023</strong> <a href="https://www.fsf.org/community/the-libreplanet-2023-charting-the-course-schedule-is-here-for-march-18-and-19">The LibrePlanet 2023: Charting the Course schedule is here for March 18 and 19</a></li>
<li><strong>01/12/2023</strong> <a href="https://www.fsf.org/news/software-freedom-in-education-advocate-erin-rose-glass-to-keynote-fsfs-libreplanet">Software freedom in education advocate Erin Rose Glass to keynote LibrePlanet </a></li>
-
+
<li><strong>12/13/2022</strong> <a href="https://www.fsf.org/blogs/community/amin-bandali-about-why-it-is-fun-to-participate-in-libreplanet">Amin Bandali: Why it's fun to participate in LibrePlanet</a></li>
<li><strong>11/30/2022</strong> <a href="https://www.fsf.org/blogs/community/fifteen-years-of-libreplanet-register-now-to-join-us-on-march-18-and-19">Fifteen years of LibrePlanet: Register now to join us on March 18 and
<li><strong>10/06/2021</strong> <a href="https://www.fsf.org/blogs/community/libreplanet-2022-returns-online-submit-your-session-proposal-by-dec-1">LibrePlanet 2022 returns online: Submit your session proposal by Dec. 1</a></li>
<li><strong>05/06/2021</strong> <a href="https://www.fsf.org/blogs/community/watch-and-share-talks-from-libreplanet-2021-empowering-users">Watch and share talks from LibrePlanet 2021: Empowering Users</a></li>
<li><strong>03/21/2021</strong> <a href="https://www.fsf.org/blogs/community/libreplanet-day-two-empowering-users-in-real-and-virtual-space">LibrePlanet day two: Empowering users in real and virtual space</a></li> -->
-</ul>
+</ul>
<div id="lpc-carousel" class="carousel">
<ul class="carousel-inner list-unstyled" style="max-width:900px; max-height:600px; !important;">
-
+
<li class="item active">
- <a href="https://my.fsf.org/node/59/"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/thanks-768x462.png"
+ <a href="https://my.fsf.org/node/59/"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/thanks-768x462.png"
alt="[ Thank you for attending LibrePlanet 2023!]"></a>
-
+
<li class="item">
- <a href="https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2023-video/"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/LP23-video-announcement.png"
+ <a href="https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2023-video/"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/LP23-video-announcement.png"
alt="[ An image showing different speakers while talking at LibrePlanet 2023: Srishti Sethi on the left, Elizabeth Chamberlain and Matthias Kirschner in the middle, and Sick Codes and Erin Rose Glass on the right. A white text in the middle says: Watch the LibrePlanet 2023 videos!]"></a>
<!-- wrapper for slides -->
<!-- <ul class="carousel-inner list-unstyled" style="max-width:900px; max-height:600px; !important;">
-
+
<li class="item active">
- <a href="https://www.fsf.org/news/right-to-repair-advocate-elizabeth-chamberlain-to-keynote-fsfs-libreplanet"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/Liz-768X461.png"
+ <a href="https://www.fsf.org/news/right-to-repair-advocate-elizabeth-chamberlain-to-keynote-fsfs-libreplanet"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/Liz-768X461.png"
alt="[ LibrePlanet 2023 keynote annoucement ]"></a>-->
<!-- <p class="carousel-caption-center">-->
<!-- </p>
</li>
-
+
<li class="item">
- <a href="https://www.fsf.org/community/the-libreplanet-2023-charting-the-course-schedule-is-here-for-march-18-and-19"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/schedule.jpg"
+ <a href="https://www.fsf.org/community/the-libreplanet-2023-charting-the-course-schedule-is-here-for-march-18-and-19"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/schedule.jpg"
alt="[ LibrePlanet 2023 schedule annoucement ]"></a>
<!-- <p class="carousel-caption-center">-->
</p>
-
+
</li>
-
+
<!-- <li class="item">
- <a href="https://www.fsf.org/news/software-freedom-in-education-advocate-erin-rose-glass-to-keynote-fsfs-libreplanet"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/glass-768X461.png"
- alt="[ LibrePlanet 2023 keynote annoucement ]"></a>
+ <a href="https://www.fsf.org/news/software-freedom-in-education-advocate-erin-rose-glass-to-keynote-fsfs-libreplanet"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/glass-768X461.png"
+ alt="[ LibrePlanet 2023 keynote annoucement ]"></a>
<!-- <p class="carousel-caption-center">-->
</p>
- </li>
+ </li>
+
-
<!-- <li class="item">
- <a href="https://my.fsf.org/civicrm/event/info?reset=1&id=106"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/registration-lp-homepage.png"
+ <a href="https://my.fsf.org/civicrm/event/info?reset=1&id=106"><img src="https://static.fsf.org/nosvn/libreplanet/2023/communications/registration-lp-homepage.png"
alt="[ LibrePlanet 2023 registration]"></a>
<!-- <p class="carousel-caption-center">-->
</p>
- </li>
+ </li>
</ul>
<div class="row margin-top">
<div class="col-sm-8"> <!-- start of main content -->
- <p>In the coming weeks, the following workshops and talks will be streamed in room <a target="_blank" href="https://live.fsf.org/stream-room-jupiter.webm">Jupiter</a> (scroll down and check the sidebar to the right for low resolution and audio stream options):</p>
+ <p>In the coming weeks, the following workshops and talks will be streamed in room <a target="_blank" href="https://live.fsf.org/stream-room-jupiter.webm">Jupiter</a> (scroll down and check the sidebar to the right for low resolution and audio stream options):</p>
<h3><a href="https://www.fsf.org/events/libreplanet-workshop-may-8-leanweb-a-ruby-out-of-rails-web-framework-for-static-and-dynamic-content-by-felix-freeman">LeanWeb: A Ruby (out of rails) web framework for static and dynamic content</a></h3>
<li><strong>Time:</strong> Monday, May 08, 12:00–13:30 EDT (16:00–17:30 UTC)</li>
<li><strong>Format:</strong> Online workshop</li>
<li><strong>Presenter:</strong> Felix Freeman</li>
-</ul>
+</ul>
<h3><a href="https://www.fsf.org/events/libreplanet-workshop-digital-colonialism-surveillance-capitalism-and-a-libre-software-future-by-jose-castro">Digital colonialism, surveillance capitalism, and a libre software future</a></h3>
<li><strong>Time:</strong> Tuesday, May 30, 12:00–12:45 EDT (16:00–16:45 UTC)</li>
<li><strong>Format:</strong> Online talk</li>
<li><strong>Presenters:</strong> Harm de Vries and Leandro von Werra</li>
-</ul>
+</ul>
<h3><a href="https://www.fsf.org/events/libreplanet-talk-june-5-worldvista-ehr-version-of-the-department-of-veterans-affairs-electronic-health-record">WorldVistA EHR version of the Department of Veterans Affairs Electronic Health Record</a></h3>
<strong>High resolution videos:</strong><br><br>
-
+
<!-- <a href="https://live.fsf.org/libreplanet-workshop.webm">https://live.fsf.org/libreplanet-workshop.webm</a><br> -->
-
+
<a href="https://live.fsf.org/stream-room-jupiter.webm">https://live.fsf.org/stream-room-jupiter.webm</a><br>
<!-- <a href="https://live.fsf.org/stream-room-saturn.webm">https://live.fsf.org/stream-room-saturn.webm</a><br>
<a href="https://live.fsf.org/stream-room-neptune.webm">https://live.fsf.org/stream-room-neptune.webm</a><br><br>
<!--
<a href="https://live.fsf.org/libreplanet-workshop-lowres.webm">https://live.fsf.org/libreplanet-workshop-lowres.webm</a><br> -->
-
-
+
+
<a href="https://live.fsf.org/stream-room-jupiter-lowres.webm">https://live.fsf.org/stream-room-jupiter-lowres.webm</a><br>
<!--
<a href="https://live.fsf.org/stream-room-saturn-lowres.webm">https://live.fsf.org/stream-room-saturn-lowres.webm</a><br>
<!--
<a href="https://live.fsf.org/libreplanet-workshop.ogg">https://live.fsf.org/libreplanet-workshop.ogg</a><br>
-->
-
-
+
+
<a href="https://live.fsf.org/stream-room-jupiter.ogg">https://live.fsf.org/stream-room-jupiter.ogg</a><br>
<!--
<a href="https://live.fsf.org/stream-room-saturn.ogg">https://live.fsf.org/stream-room-saturn.ogg</a><br>
<h1>Raffle</h1>
-<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2023/sponsors">some of our generous sponsors</a>.
+<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2023/sponsors">some of our generous sponsors</a>.
<p>All attendees get a gratis raffle ticket, FSF members get a second gratis ticket, and everyone can buy more chances to win at the GNU Press table during LibrePlanet, as well as at the Friday open house and Saturday evening social events! Buy one ticket for $2, 3 tickets for $5, one arm's length for $20, cash or credit. FSF staff and board members are not eligible to participate in the raffle.</p>
<!-- <li>Subscriptions to <a href="https://jmp.chat/">JMP</a></li> -->
<!-- <li>ChaosKeys from <a href="https://altusmetrum.org/">Altus Metrum, LLC</a></li> -->
<!-- </ul> -->
-
+
<!--#include virtual="/2023/includes/footer.html"-->
.exhibitor-info { max-width: 650px; margin: 0 auto 40px auto; }
h2 a { border: none; }
.irc-client { display: block; width: 650px; height: 500px; margin: 0 auto; }
-</style>
+</style>
<h2>Exhibitors</h2>
<p>The lively Exhibit Hall at LibrePlanet will be open on both conference days, in person, and online at LibreAdventure with something for everyone. Be sure to take a virtual stroll around and meet exhibitors who care about software freedom.</p>
</div></div>
</p>
<br>
-<div style="clear:both"><br></div>
+<div style="clear:both"><br></div>
<div class="exhibitor-info">
<p> <div class="hover_img">
</div></div>
</p>
<br>
-<div style="clear:both"><br></div>
+<div style="clear:both"><br></div>
<div class="exhibitor-info">
<p> <div class="hover_img">
<br>
<p>As a 501(c)(3) nonprofit, the Free Software Foundation relies on sponsors and volunteers to make LibrePlanet a reality each year. Thanks to conference sponsors, we can offer free admission to students, welcoming event space and social activities, and refreshments for attendees. Support from generous sponsors also enables LibrePlanet to run on free software infrastructure, including livestreaming and session recordings.
-<!--</p>In past years, our sponsors have included Spruce, Red Hat, Vikings, Technoethical, and Aleph Labs, among others below.</p>-->
+<!--</p>In past years, our sponsors have included Spruce, Red Hat, Vikings, Technoethical, and Aleph Labs, among others below.</p>-->
-<p>Sponsorship and underwriting opportunities can be found in this <a href="LibrePlanet2023-Sponsorship-Packages.pdf">informational flyer</a> or in this year's <a href="LibrePlanet2023-Sponsorship.pdf">prospectus</a>.
+<p>Sponsorship and underwriting opportunities can be found in this <a href="LibrePlanet2023-Sponsorship-Packages.pdf">informational flyer</a> or in this year's <a href="LibrePlanet2023-Sponsorship.pdf">prospectus</a>.
-<p>To inquire about sponsoring the event, or if you have any questions, please email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</p>
+<p>To inquire about sponsoring the event, or if you have any questions, please email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</p>
<p><b><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=114">Register to the event as a sponsor!</a></b> Please only use this link after confirmation from the FSF! All materials must be submitted by **March 1, 2023** in order to guarantee visual inclusion.</p>
<h2>Become a LibrePlanet 2023 exhibitor</h2>
<br>
-<p>The lively and centrally located Exhibit Hall at LibrePlanet will be open on both conference days (times TBC), with something for everyone. Be sure to take a stroll around and meet exhibitors who care about software freedom.</p>
+<p>The lively and centrally located Exhibit Hall at LibrePlanet will be open on both conference days (times TBC), with something for everyone. Be sure to take a stroll around and meet exhibitors who care about software freedom.</p>
<p><b>We offer early registration pricing for exhibitors until February 21st, 2023. Nonprofits and individual projects are eligible for a discounted exhibitors price.</b></p> <p><b><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=114">Register to the event as an exhibitor!</a></b> Please only use this link after confirmation from the FSF! All materials must be submitted by **March 1, 2023** in order to guarantee visual inclusion.</p>
<!--#include virtual="/2023/includes/sidebar.html"-->
<h2>Unfortunately, pre-registration is full.</h2>
-<p>We will do our best to accomodate walk-up registrations.
+<p>We will do our best to accomodate walk-up registrations.
Prices are as follows:</p>
<ul>
<li>FSF members and students: $ 0</li>
<!--#include virtual="/2022/includes/sidebar.html"-->
##Unfortunately, pre-registration is full.
-We will do our best to accomodate walk-up registrations.
+We will do our best to accomodate walk-up registrations.
Prices are as follows:
* FSF members and students: $ 0
font-size: 16px;
line-height: 1.428571429;
/* color: #dbd6ce; */
-
+
color: #404040;
scrollbar-color: #4b4f53 #1c1e1f;
}
font-size: 20px;
}
-.lp-logo {
- margin-bottom: -78px;
+.lp-logo {
+ margin-bottom: -78px;
margin-top: 25px;
}
/* Space background */
/*background-image: url('/2024/assets/img/pattern-1.png') !important; */
/* background-color: rgba(55, 57, 58, 0.85); */
- background-color: #ffffff;
+ background-color: #ffffff;
background-position: top right;
background-repeat: repeat-y repeat-x;
background-size: contain;
@media (max-width:600px) {
-
+
.talkblock{
clear: both;
text-align: left;
text-align: center;
position: relative;
width: 95%;
- overflow: hidden;
+ overflow: hidden;
}
#deadline-table th {
.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete { position: absolute; cursor: default; }
+.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
-</defs></svg>
\ No newline at end of file
+</defs></svg>
\ No newline at end of file
id="Camada_3"
style="display:inline"
transform="matrix(1.8123521,0,0,1.8123521,193.65387,-244.78179)">
-
+
<g
id="g877"
style="fill:#ffffff;fill-opacity:1">
-
+
<path
class="st7"
d="M 744.8,578.7"
style="fill:#ffffff;fill-opacity:1" />
</g><g
id="g863">
-
+
<rect
x="400.39999"
y="698.90002"
width="12.7"
height="12.7"
id="rect771" />
-
+
<rect
x="417.20001"
y="682.20001"
width="12.7"
height="12.7"
id="rect773" />
-
+
<rect
x="325.29999"
y="698.90002"
width="12.7"
height="12.7"
id="rect777" />
-
+
<rect
x="308.20001"
y="681.90002"
class="st3"
points="456.5,694.6 447.5,703.6 412.5,668.6 430.5,668.6 "
id="polygon787" />
-
+
<rect
x="266.29999"
y="706.20001"
width="12.7"
height="12.7"
id="rect789" />
-
+
<rect
x="459.10001"
y="706.20001"
class="st3"
points="608,476.1 597.8,463.5 587.9,471.5 598,483.9 "
id="polygon803" />
-
+
<rect
x="648.29999"
y="532.20001"
points="624,516.1 634.4,528.9 644.3,520.9 633.8,508 "
id="polygon811" />
</g>
-
+
<rect
x="545.90002"
y="656"
width="12.7"
height="12.7"
id="rect815" />
-
+
<rect
x="546"
y="633.20001"
id="Camada_4_19_">
<g
id="g1229_11_">
-
+
<rect
id="rect1159_4_"
x="453.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_6_"
x="422.6"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_6_"
x="438"
id="polygon1169_4_"
class="st1"
points="516.7,-548.3 523.3,-556.4 516.8,-561.5 510.3,-553.5 " />
-
+
<rect
id="rect1171_4_"
x="545.8"
id="Camada_4_18_">
<g
id="g1229_10_">
-
+
<rect
id="rect1159_3_"
x="162.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_3_"
x="131.6"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_4_"
x="147"
id="polygon1169_3_"
class="st1"
points="225.6,-548.3 232.2,-556.4 225.8,-561.5 219.3,-553.5 " />
-
+
<rect
id="rect1171_3_"
x="254.8"
id="Camada_4_17_">
<g
id="g1229_6_">
-
+
<rect
id="rect1137_6_"
x="534.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_6_"
x="545.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_6_"
x="486.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_6_"
x="475.5"
id="polygon1153_6_"
class="st1"
points="565.2,-430.6 571,-424.8 554.3,-408 542.7,-408 " />
-
+
<rect
id="rect1155_6_"
x="448.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_6_"
x="572.8"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_2_"
x="568.1"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_3_"
x="583.5"
id="Camada_4_16_">
<g
id="g1229_4_">
-
+
<rect
id="rect1137_3_"
x="243.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_3_"
x="254.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_3_"
x="195.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_3_"
x="184.4"
id="polygon1153_3_"
class="st1"
points="274.2,-430.6 280,-424.8 263.3,-408 251.7,-408 " />
-
+
<rect
id="rect1155_3_"
x="157.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_3_"
x="281.8"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1159_2_"
x="308"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_1_"
x="277.1"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_2_"
x="292.5"
id="polygon1169_2_"
class="st1"
points="371.2,-275.7 377.8,-283.8 371.3,-288.9 364.8,-280.9 " />
-
+
<rect
id="rect1171_2_"
x="400.3"
class="st1"
points="394.8,-317.9 388.1,-309.6 394.4,-304.5 401.1,-312.7 " />
</g>
-
+
<rect
id="rect1181_4_"
x="337.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_4_"
x="337.8"
id="Camada_4_15_">
<g
id="g1229_3_">
-
+
<rect
id="rect1159_1_"
x="16.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_1_"
x="1.5"
id="polygon1169_1_"
class="st1"
points="80.1,-275.7 86.7,-283.8 80.3,-288.9 73.8,-280.9 " />
-
+
<rect
id="rect1171_1_"
x="109.3"
class="st1"
points="103.8,-317.9 97,-309.6 103.4,-304.5 110.1,-312.7 " />
</g>
-
+
<rect
id="rect1181_3_"
x="46.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_3_"
x="46.7"
id="Camada_4_11_">
<g
id="g1229_2_">
-
+
<rect
id="rect1137_2_"
x="389.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_2_"
x="400.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_2_"
x="340.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_2_"
x="330"
id="polygon1153_2_"
class="st1"
points="419.7,-158 425.5,-152.2 408.8,-135.4 397.2,-135.4 " />
-
+
<rect
id="rect1155_2_"
x="302.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_2_"
x="427.3"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1181_2_"
x="483.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_2_"
x="483.3"
id="Camada_4_1_">
<g
id="g1229_1_">
-
+
<rect
id="rect1137_1_"
x="98.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_1_"
x="109.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_1_"
x="49.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_1_"
x="38.9"
id="polygon1153_1_"
class="st1"
points="128.7,-158 134.5,-152.2 117.8,-135.4 106.2,-135.4 " />
-
+
<rect
id="rect1155_1_"
x="11.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_1_"
x="136.3"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1181_1_"
x="192.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_1_"
x="192.2"
this.script = script;
var isUAgecko = 'undefined' != typeof navigator && /gecko/i.test(navigator.userAgent);
-
+
if (isUAgecko) {
setTimeout(function () {
var iframe = document.createElement('iframe');
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
event.preventDefault();
-
+
mouseHandled = true;
return true;
},
this.handle = this._getHandle(event);
if (!this.handle)
return false;
-
+
$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {
$('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
.css({
if ($.ui.ddmanager && !o.dropBehaviour)
$.ui.ddmanager.prepareOffsets(this, event);
-
+
this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event);
-
+
return true;
},
dropped = this.dropped;
this.dropped = false;
}
-
+
//if the original element is no longer in the DOM don't bother to continue (see #8269)
var element = this.element[0], elementInDom = false;
while ( element && (element = element.parentNode) ) {
return false;
},
-
+
_mouseUp: function(event) {
//Remove frame helpers
- $("div.ui-draggable-iframeFix").each(function() {
- this.parentNode.removeChild(this);
+ $("div.ui-draggable-iframeFix").each(function() {
+ this.parentNode.removeChild(this);
});
-
+
//If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event);
-
+
return $.ui.mouse.prototype._mouseUp.call(this, event);
},
-
+
cancel: function() {
-
+
if(this.helper.is(".ui-draggable-dragging")) {
this._mouseUp({});
} else {
this._clear();
}
-
+
return this;
-
+
},
_getHandle: function(event) {
};
$.each(inst.sortables, function(i) {
-
+
//Copy over some variables to allow calling the sortable's native _intersectsWith
this.instance.positionAbs = inst.positionAbs;
this.instance.helperProportions = inst.helperProportions;
this.instance.offset.click = inst.offset.click;
-
+
if(this.instance._intersectsWith(this.instance.containerCache)) {
//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once
this.instance.isOver = 0;
this.instance.cancelHelperRemoval = true;
-
+
//Prevent reverting on this forced stop
this.instance.options.revert = false;
-
+
// The out event needs to be triggered independently
this.instance._trigger('out', event, this.instance._uiHash(this.instance));
-
+
this.instance._mouseStop(event, true);
this.instance.options.helper = this.instance.options._helper;
return (parseInt($(a).css("zIndex"),10) || 0) - (parseInt($(b).css("zIndex"),10) || 0);
});
if (!group.length) { return; }
-
+
var min = parseInt(group[0].style.zIndex) || 0;
$(group).each(function(i) {
this.style.zIndex = min + i;
_alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
$.each(css, function (i, prop) {
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',
-
+
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
if (this.debug)
console.log.apply('', arguments);
},
-
+
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing && $.datepicker._lastInput != input[0]) {
- $.datepicker._hideDatepicker();
+ $.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
- case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
},
/* Pop-up the date picker for a given input field.
- If false returned from beforeShow event handler do not show.
+ If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
// this breaks the change event in IE
inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement)
inst.input.focus();
- // deffered render of the years select (to avoid flashes on Firefox)
+ // deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
$(this).bind(this.getAttribute('data-event'), handler[this.getAttribute('data-handler')]);
});
},
-
+
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
drawMonth = 0;
drawYear++;
}
- calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
group += calender;
}
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
-
+
html += inst.yearshtml;
inst.yearshtml = null;
}
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
- */
+ */
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
Object - settings for attaching new datepicker functionality
@return jQuery object */
$.fn.datepicker = function(options){
-
+
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
-
+
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
}
$.effects.save( elem, props );
-
+
elem
.show()
.css({
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
/*!
* jQuery Feeds v0.5
* https://camagu.github.com/jquery-feeds
- *
+ *
* Copyright (c) 2013, Camilo Aguilar
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
- *
+ *
* Includes a modified version of Simple JavaScript Templating
* http://ejohn.org/blog/javascript-micro-templating/
* Copyright (c) John Resig (http://ejohn.org)
* MIT licensed
- *
+ *
* Date: 2013-02-18
*/
(function(e){var t={};e.fn.feeds=function(n){var r={service:"//ajax.googleapis.com/ajax/services/feed/load?v=1.0",settings:{loadingTemplate:'<div class="feeds-loader">Loading entries ...</div>',entryTemplate:'<div class="feeds-entry feeds-source-<!=source!>"><a class="feeds-entry-title" target="_blank" href="<!=link!>" title="<!=title!>"><!=title!></a><div class="feeds-entry-date"><!=publishedDate!></div><div class="feeds-entry-contentSnippet"><!=contentSnippet!></div></div>',feeds:{},max:-1,xml:!1,ssl:"auto",onComplete:function(e){},preprocess:function(e){}},feeds:{},entries:[],feedsLength:0,feedsLoaded:0,$element:null,$loader:null,init:function(t,n){this.settings=e.extend(this.settings,n),this.feeds=this.settings.feeds;for(var r in this.feeds)this.feeds.hasOwnProperty(r)&&this.feedsLength++;var i=this.settings.ssl==="auto"?document.location.protocol:this.settings.ssl?"https:":"http:";e.inArray(i,["http:","https"])===-1&&(i="https:"),this.service=i+this.service,this.$element=e(t);var s=typeof this.settings.loadingTemplate=="function"?this.settings.loadingTemplate:this.tmpl(this.settings.loadingTemplate);this.$loader=e(s.call(this,{})),this.$element.html(this.$loader);var o=this.settings.xml?"json_xml":"json";for(var u in this.feeds)this.fetchFeed(u,this.feeds[u],this.settings.max,o)},fetchFeed:function(n,r,i,s){var o=this,u=r+"**"+i+"**"+s;if(typeof t[u]!="undefined"){o.processResponse(t[u],n,r);return}e.ajax({url:this.service,dataType:"jsonp",data:{q:r,num:i,output:s},beforeSend:function(){this.feed=r,this.key=n},success:function(e){t[u]=e,o.processResponse(e,this.key,this.feed)}})},processResponse:function(t,n,r){if(t.responseStatus!==200)window.console&&window.console.log&&console.log("Unable to load feed "+r+": ("+t.responseStatus+") "+t.responseDetails);else{var i=t.responseData.feed,s=i.entries,o=t.responseData.feed.type;if(this.settings.xml){var u=e(t.responseData.xmlString);o.match(/^rss.*/)?u=u.filter("rss").find("channel"):o.match(/^atom.*/)&&(u=u.filter("feed")),i.xml=u}for(var a in s){var f=e.extend({},s[a]);f.source=n,f.publishedDateRaw=f.publishedDate,f.feedUrl=i.feedUrl,f.feedTitle=i.title,f.feedLink=i.link,f.feedDescription=i.description,f.feedAuthor=i.author,this.settings.xml&&(o.match(/^rss.*/)?f.xml=i.xml.find("item").eq(a):o.match(/^atom.*/)?f.xml=i.xml.find("entry").eq(a):f.xml={}),this.settings.preprocess.call(f,i)!==!1&&this.entries.push(f)}}this.feedsLoaded++,this.checkComplete()},checkComplete:function(){if(this.feedsLoaded===this.feedsLength){this.$loader.remove(),this.entries.sort(function(e,t){var n=(new Date(e.publishedDateRaw)).getTime(),r=(new Date(t.publishedDateRaw)).getTime();return r-n});var e=typeof this.settings.entryTemplate=="function"?this.settings.entryTemplate:this.tmpl(this.settings.entryTemplate);for(var t in this.entries){var n=this.entries[t],r=e.call(this,n);this.$element.append(r)}this.settings.onComplete.call(this.$element[0],this.entries)}},tmplCache:{},tmpl:function(t,n){var r=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<!").join(" ").replace(/((^|!>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)!>/g,"',typeof $1 != 'undefined' ? $1 : '','").split(" ").join("');").split("!>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):this.tmplCache[t]=this.tmplCache[t]||this.tmpl(document.getElementById(t).innerHTML);return n?r(n):r}};return e(this).each(function(){r.init(this,n)})}})(jQuery);
\ No newline at end of file
target: '#output'
});
});
-
+
You can also use ajaxForm with delegation (requires jQuery v1.7+), so the
form does not have to exist when you invoke ajaxForm:
delegation: true,
target: '#output'
});
-
+
When using ajaxForm, the ajaxSubmit function will be invoked for you
at the appropriate time.
*/
log('ajaxSubmit: skipping submit process - no element selected');
return this;
}
-
+
var method, action, url, $form = this;
if (typeof options == 'function') {
if ( traditional === undefined ) {
traditional = $.ajaxSettings.traditional;
}
-
+
var elements = [];
var qx, a = this.formToArray(options.semantic, elements);
if (options.data) {
var q = $.param(a, traditional);
if (qx) {
q = ( q ? (q + '&' + qx) : qx );
- }
+ }
if (options.type.toUpperCase() == 'GET') {
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
options.data = null; // data is null for 'get'
}
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
- var context = options.context || this ; // jQuery 1.4+ supports scope context
+ var context = options.context || this ; // jQuery 1.4+ supports scope context
for (var i=0, max=callbacks.length; i < max; i++) {
callbacks[i].apply(context, [data, status, xhr || $form, $form]);
}
// [value] (issue #113), also see comment:
// https://github.com/malsup/form/commit/588306aedba1de01388032d5f42a60159eea9228#commitcomment-2180219
- var fileInputs = $('input[type=file]:enabled[value!=""]', this);
+ var fileInputs = $('input[type=file]:enabled[value!=""]', this);
var hasFileInputs = fileInputs.length > 0;
var mp = 'multipart/form-data';
deferred.reject();
return deferred;
}
-
+
if (a) {
// ensure that every serialized input is still enabled
for (i=0; i < elements.length; i++) {
if (io.contentWindow.document.execCommand) {
io.contentWindow.document.execCommand('Stop');
}
- }
+ }
catch(ignore) {}
$io.attr('src', s.iframeSrc); // abort op in progress
}
}
}
-
+
var CLIENT_TIMEOUT_ABORT = 1;
var SERVER_ABORT = 2;
var doc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument ? frame.contentDocument : frame.document;
return doc;
}
-
+
// Rails CSRF hack (thanks to Yvan Barthelemy)
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
if (s.timeout) {
timeoutHandle = setTimeout(function() { timedOut = true; cb(CLIENT_TIMEOUT_ABORT); }, s.timeout);
}
-
+
// look for server aborts
function checkState() {
try {
}
if (io.detachEvent)
io.detachEvent('onload', cb);
- else
+ else
io.removeEventListener('load', cb, false);
var status = 'success', errMsg;
var pre = doc.getElementsByTagName('pre')[0];
var b = doc.getElementsByTagName('body')[0];
if (pre) {
- xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
+ xhr.responseText = pre.innerHTML ? pre.innerHTML : pre.textContent;
}
else if (b) {
xhr.responseText = b.innerHTML ? b.innerHTML : b.textContent;
$.fn.ajaxForm = function(options) {
options = options || {};
options.delegation = options.delegation && $.isFunction($.fn.on);
-
+
// in jQuery 1.3+ we can fix mistakes with the ready state
if (!options.delegation && this.length === 0) {
var o = { s: this.selector, c: this.context };
.bind('click.form-plugin', options, captureSubmittingElement);
};
-// private event handlers
+// private event handlers
function doAjaxSubmit(e) {
/*jshint validthis:true */
var options = e.data;
$(this).ajaxSubmit(options);
}
}
-
+
function captureSubmittingElement(e) {
/*jshint validthis:true */
var target = e.target;
v = $.fieldValue(el, true);
if (v && v.constructor == Array) {
- if (elements)
+ if (elements)
elements.push(el);
for(j=0, jmax=v.length; j < jmax; j++) {
a.push({name: n, value: v[j]});
}
}
else if (feature.fileapi && el.type == 'file' && !el.disabled) {
- if (elements)
+ if (elements)
elements.push(el);
var files = el.files;
if (files.length) {
}
}
else if (v !== null && typeof v != 'undefined') {
- if (elements)
+ if (elements)
elements.push(el);
a.push({name: n, value: v, type: el.type, required: el.required});
}
// helper fn for console logging
function log() {
- if (!$.fn.ajaxSubmit.debug)
+ if (!$.fn.ajaxSubmit.debug)
return;
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
if (window.console && window.console.log) {
i-- //check current index again and flatten until there are no more nested arrays at that index
}
}
-
+
var nodes = [], intact = cached.length === data.length, subArrayCount = 0;
//keys algorithm: sort elements without recreating them if keys are present
}
if (shouldMaintainIdentities) {
if (data.indexOf(null) > -1) data = data.filter(function(x) {return x != null})
-
+
var keysDiffer = false
if (data.length != cached.length) keysDiffer = true
else for (var i = 0, cachedCell, dataCell; cachedCell = cached[i], dataCell = data[i]; i++) {
break
}
}
-
+
if (keysDiffer) {
for (var i = 0, len = data.length; i < len; i++) {
if (data[i] && data[i].attrs) {
}
if (!intact) {
//diff the array itself
-
+
//update the list of DOM nodes by collecting the nodes from each item
for (var i = 0, len = data.length; i < len; i++) {
if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
}
return str.join("&")
}
-
+
function parseQueryString(str) {
var pairs = str.split("&"), params = {};
for (var i = 0, len = pairs.length; i < len; i++) {
/**
* Your Twitter App Info
*/
-
+
// Consumer Key
define('CONSUMER_KEY', 'yxmC3rFOrr1xRGbCo3J6QNkKW');
define('CONSUMER_SECRET', 'rqI9V5lPttEhNeOwBl14Jn6ryCU5MRBJQ5J6j8OEgaXwekeZM2');
// User Access Token
define('ACCESS_TOKEN', '2972347515-LCsxZafDTPd8hPCpWfewRVCEqgkHysKqB97x1bc');
define('ACCESS_SECRET', 'Od3GSWu8iVW6x03YfTtDXVY48ewB315FkSrb3HQgi8Tx7');
-
+
// Cache Settings
define('CACHE_ENABLED', false);
define('CACHE_LIFETIME', 3600); // in seconds
// Check if keys are in place
if (CONSUMER_KEY === '' || CONSUMER_SECRET === '' || CONSUMER_KEY === 'CONSUMER_KEY_HERE' || CONSUMER_SECRET === 'CONSUMER_SECRET_HERE') {
echo 'You need a consumer key and secret keys. Get one from <a href="https://dev.twitter.com/apps">dev.twitter.com/apps</a>';
-
+
exit;
}
$exclude_replies = filter_input(INPUT_GET, 'exclude_replies', FILTER_SANITIZE_SPECIAL_CHARS);
$list_slug = filter_input(INPUT_GET, 'list_slug', FILTER_SANITIZE_SPECIAL_CHARS);
$hashtag = filter_input(INPUT_GET, 'hashtag', FILTER_SANITIZE_SPECIAL_CHARS);
-
+
if(CACHE_ENABLED) {
// Generate cache key from query data
$cache_key = md5(
var_export(array($username, $number, $exclude_replies, $list_slug, $hashtag), true) . HASH_SALT
);
-
+
// Remove old files from cache dir
$cache_path = dirname(__FILE__) . '/cache/';
foreach (glob($cache_path . '*') as $file) {
unlink($file);
}
}
-
+
// If cache file exists - return it
if(file_exists($cache_path . $cache_key)) {
header('Content-Type: application/json');
-
+
echo file_get_contents($cache_path . $cache_key);
exit;
}
}
-
+
/**
* Gets connection with user Twitter account
* @param String $cons_key Consumer Key
function getConnectionWithToken($cons_key, $cons_secret, $oauth_token, $oauth_secret)
{
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_secret);
-
+
return $connection;
}
-
+
// Connect
$connection = getConnectionWithToken(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
-
+
// Get Tweets
if (!empty($list_slug)) {
$params = array(
}
/**
- * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
- * where the Signature Base String is the text and the key is the concatenated values (each first
- * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
+ * The HMAC-SHA1 signature method uses the HMAC-SHA1 signature algorithm as defined in [RFC2104]
+ * where the Signature Base String is the text and the key is the concatenated values (each first
+ * encoded per Parameter Encoding) of the Consumer Secret and Token Secret, separated by an '&'
* character (ASCII code 38) even if empty.
* - Chapter 9.2 ("HMAC-SHA1")
*/
}
/**
- * The PLAINTEXT method does not provide any security protection and SHOULD only be used
+ * The PLAINTEXT method does not provide any security protection and SHOULD only be used
* over a secure channel such as HTTPS. It does not use the Signature Base String.
* - Chapter 9.4 ("PLAINTEXT")
*/
}
/**
- * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
- * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
+ * oauth_signature is set to the concatenated encoded values of the Consumer Secret and
+ * Token Secret, separated by a '&' character (ASCII code 38), even if either secret is
* empty. The result MUST be encoded again.
* - Chapter 9.4.1 ("Generating Signatures")
*
}
/**
- * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
- * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
- * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
- * verified way to the Service Provider, in a manner which is beyond the scope of this
+ * The RSA-SHA1 signature method uses the RSASSA-PKCS1-v1_5 signature algorithm as defined in
+ * [RFC3447] section 8.2 (more simply known as PKCS#1), using SHA-1 as the hash function for
+ * EMSA-PKCS1-v1_5. It is assumed that the Consumer has provided its RSA public key in a
+ * verified way to the Service Provider, in a manner which is beyond the scope of this
* specification.
* - Chapter 9.3 ("RSA-SHA1")
*/
private function get_version(&$request) {
$version = $request->get_parameter("oauth_version");
if (!$version) {
- // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
+ // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present.
// Chapter 7.0 ("Accessing Protected Ressources")
$version = '1.0';
}
throw new OAuthException(
'Missing timestamp parameter. The parameter is required'
);
-
+
// verify that timestamp is recentish
$now = time();
if (abs($now - $timestamp) > $this->timestamp_threshold) {
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
- public $connecttimeout = 30;
+ public $connecttimeout = 30;
/* Verify SSL Cert. */
public $ssl_verifypeer = FALSE;
/* Respons format. */
*/
function getRequestToken($oauth_callback) {
$parameters = array();
- $parameters['oauth_callback'] = $oauth_callback;
+ $parameters['oauth_callback'] = $oauth_callback;
$request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
$token = OAuthUtil::parse_parameters($request);
$this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
* "user_id" => "9436992",
* "screen_name" => "abraham",
* "x_auth_expires" => "0")
- */
+ */
function getXAuthToken($username, $password) {
$parameters = array();
$parameters['x_auth_username'] = $username;
}
return $response;
}
-
+
/**
* POST wrapper for oAuthRequest.
*/
id="Camada_4_19_">
<g
id="g1229_11_">
-
+
<rect
id="rect1159_4_"
x="453.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_6_"
x="422.6"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_6_"
x="438"
id="polygon1169_4_"
class="st1"
points="516.7,-548.3 523.3,-556.4 516.8,-561.5 510.3,-553.5 " />
-
+
<rect
id="rect1171_4_"
x="545.8"
id="Camada_4_18_">
<g
id="g1229_10_">
-
+
<rect
id="rect1159_3_"
x="162.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_3_"
x="131.6"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_4_"
x="147"
id="polygon1169_3_"
class="st1"
points="225.6,-548.3 232.2,-556.4 225.8,-561.5 219.3,-553.5 " />
-
+
<rect
id="rect1171_3_"
x="254.8"
id="Camada_4_17_">
<g
id="g1229_6_">
-
+
<rect
id="rect1137_6_"
x="534.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_6_"
x="545.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_6_"
x="486.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_6_"
x="475.5"
id="polygon1153_6_"
class="st1"
points="565.2,-430.6 571,-424.8 554.3,-408 542.7,-408 " />
-
+
<rect
id="rect1155_6_"
x="448.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_6_"
x="572.8"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_2_"
x="568.1"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_3_"
x="583.5"
id="Camada_4_16_">
<g
id="g1229_4_">
-
+
<rect
id="rect1137_3_"
x="243.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_3_"
x="254.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_3_"
x="195.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_3_"
x="184.4"
id="polygon1153_3_"
class="st1"
points="274.2,-430.6 280,-424.8 263.3,-408 251.7,-408 " />
-
+
<rect
id="rect1155_3_"
x="157.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_3_"
x="281.8"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1159_2_"
x="308"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1161_1_"
x="277.1"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_2_"
x="292.5"
id="polygon1169_2_"
class="st1"
points="371.2,-275.7 377.8,-283.8 371.3,-288.9 364.8,-280.9 " />
-
+
<rect
id="rect1171_2_"
x="400.3"
class="st1"
points="394.8,-317.9 388.1,-309.6 394.4,-304.5 401.1,-312.7 " />
</g>
-
+
<rect
id="rect1181_4_"
x="337.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_4_"
x="337.8"
id="Camada_4_15_">
<g
id="g1229_3_">
-
+
<rect
id="rect1159_1_"
x="16.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1163_1_"
x="1.5"
id="polygon1169_1_"
class="st1"
points="80.1,-275.7 86.7,-283.8 80.3,-288.9 73.8,-280.9 " />
-
+
<rect
id="rect1171_1_"
x="109.3"
class="st1"
points="103.8,-317.9 97,-309.6 103.4,-304.5 110.1,-312.7 " />
</g>
-
+
<rect
id="rect1181_3_"
x="46.7"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_3_"
x="46.7"
id="Camada_4_11_">
<g
id="g1229_2_">
-
+
<rect
id="rect1137_2_"
x="389.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_2_"
x="400.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_2_"
x="340.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_2_"
x="330"
id="polygon1153_2_"
class="st1"
points="419.7,-158 425.5,-152.2 408.8,-135.4 397.2,-135.4 " />
-
+
<rect
id="rect1155_2_"
x="302.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_2_"
x="427.3"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1181_2_"
x="483.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_2_"
x="483.3"
id="Camada_4_1_">
<g
id="g1229_1_">
-
+
<rect
id="rect1137_1_"
x="98.4"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1139_1_"
x="109.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1141_1_"
x="49.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1145_1_"
x="38.9"
id="polygon1153_1_"
class="st1"
points="128.7,-158 134.5,-152.2 117.8,-135.4 106.2,-135.4 " />
-
+
<rect
id="rect1155_1_"
x="11.9"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1157_1_"
x="136.3"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1181_1_"
x="192.2"
class="st1"
width="8.2"
height="8.2" />
-
+
<rect
id="rect1183_1_"
x="192.2"
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-##Please check for our confirmation email
+##Please check for our confirmation email
For your protection and to prevent spam, we don't process form
submissions until you click the link in the confirmation email.
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-## Sorry, the feedback survey is now closed
-
+## Sorry, the feedback survey is now closed
+
[Return to the home page](https://www.libreplanet.org/2022)
-
+
<!--#include virtual="/2022/includes/footer.html"-->
<!--#include virtual="/2022/includes/common_js.html"-->
<!--#include virtual="/2022/includes/banner.html"-->
<!--#include virtual="/2022/includes/sidebar.html"-->
-## One more step!
+## One more step!
Thanks for filling out the survey. To process your answers, we
need you to confirm your email address by clicking the link in
-the confirmation email we've just sent you.
-
+the confirmation email we've just sent you.
+
**Please check your email now for the confirmation link.**
-
+
[Return to the homepage.](https://www.libreplanet.org/2022/)
<!--#include virtual="/2022/includes/footer.html"-->
<p>LibrePlanet 2024 will be held at the <strong><a href="https://wit.edu/">Wentworth Institute of Technology (WIT)</a></strong> located at 550 Huntington Ave, Boston, MA 02115. The closest MBTA stop is the <a href="https://www.mbta.com/stops/place-mfa">Museum of Fine Arts stop</a> on the Green Line E branch. Another option is to take the orange line to <a href="https://www.mbta.com/stops/place-rugg">Ruggles</a>. From there it is a 9-minute walk to the WIT.</p>
-<h2 id="lodging">Where to stay</h2>
+<h2 id="lodging">Where to stay</h2>
<h3>Local hosts</h3>
-<p>Do you want to room with like-minded individuals? Do you want to host a LibrePlanet attendee or speaker? The <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2024/Accommodations">accommodations section on the LibrePlanet wiki</a> is your place to let others know.</p>
+<p>Do you want to room with like-minded individuals? Do you want to host a LibrePlanet attendee or speaker? The <a href="https://libreplanet.org/wiki/LibrePlanet:Conference/2024/Accommodations">accommodations section on the LibrePlanet wiki</a> is your place to let others know.</p>
<h3>Inns</h3>
<p>Prices range from $$ (medium) to $$$ (pricey).</p>
<ul>
-<li><a href="https://www.innatlongwood.com/">The Inn at Longwood Medical ($$)</a> - 342 Longwood Ave, Boston, MA 02115</li>
+<li><a href="https://www.innatlongwood.com/">The Inn at Longwood Medical ($$)</a> - 342 Longwood Ave, Boston, MA 02115</li>
<li><a href="https://www.marriott.com/en-us/hotels/bosfn-residence-inn-boston-back-bay-fenway/overview/">Residence Inn Boston Backbay/Fenway ($$$)</a> - 125 Brookline Ave, Boston, MA 02215</li>
<li><a href="https://www.innatstbotolph.com/">The Inn At St Botolph ($$)</a> - 99 Saint Botolph Street, Boston, MA 02199</li>
</ul>
-<h3>Hotels</h3>
+<h3>Hotels</h3>
<p>Prices range from $$ (medium) to $$$ (pricey).</p>
<ul>
-<li><a href="https://www.theverbhotel.com/">The Verb Hotel ($$$)</a> - 1271 Boylston Street, Boston, MA 02215</li>
+<li><a href="https://www.theverbhotel.com/">The Verb Hotel ($$$)</a> - 1271 Boylston Street, Boston, MA 02215</li>
<li><a href="https://www.midtownhotel.com/">The Midtown Hotel ($$)</a> - 220, Huntington Avenue, Boston, MA 02115</li>
<li><a href="https://www.colonnadehotel.com/">The Colonnade Hotel ($$$)</a> - 120 Huntington Avenue, Boston, MA 02116</li>
-<li><a href="https://www.hilton.com/en/hotels/bosbhhh-hilton-boston-back-bay/">Hilton Boston Backbay ($$$)</a> - 40 Dalton St, Boston, MA 02115</li>
+<li><a href="https://www.hilton.com/en/hotels/bosbhhh-hilton-boston-back-bay/">Hilton Boston Backbay ($$$)</a> - 40 Dalton St, Boston, MA 02115</li>
<li><a href="https://www.fourseasons.com/onedalton/">Four Seasons Hotel One Dalton ($$$)</a> - 1 Dalton Street, Boston, MA 02115</li>
</ul>
<em>Prices are approximate and may not be up to date.</em>
- <h4>Parking at the WIT</h4>
- Parking at the venue is for free. Visitors should park in the <a href="https://www.openstreetmap.org/way/589006707#map=19/42.33668/-71.09635">West Lot</a>.
+ <h4>Parking at the WIT</h4>
+ Parking at the venue is for free. Visitors should park in the <a href="https://www.openstreetmap.org/way/589006707#map=19/42.33668/-71.09635">West Lot</a>.
<h4>Downtown/Near FSF office</h4>
</ul>
<h2 id="eating">Where to Eat</h2>
-
+
<h3>Fenway–Kenmore</h3>
-
+
<ol>
<li><a href="https://locations.blazepizza.com/massachusetts/boston/">Blaze Pizza Boston Fenway ($$)</a> - 1282 Boylston Street, Boston, MA 02215 - vegan options</li>
<li><a href="https://www.eljefestaqueria.com/">El Jefe's Taqueria ($$)</a> - 269 Huntington Ave, Boston, MA 02115 - tacos, burritos and bowls, vegetarian options.</li>
<li><a href="https://www.solidgroundcafe.com/">Solid Ground Cafe</a> - 742 Huntington Ave, Boston, MA 02115 - locally owned cafe, breakfast, lunch.</li>
</ol>
-
+
<h3>Mission Hill</h3>
-
+
<ol>
<li><a href="https://www.eatatmilkweed.com/">Milkweed ($$$)</a> - 1508 Tremont Street, Boston, MA, 02120 - Breakfast, lunch, dinner, vegetarian and vegan options.</li>
<li>Ali's Roti Restaurant ($$) - 1035 Tremont St, Boston, MA 02120 - Carribean, vegetarian and halal options.</li>
<li><a href="https://lillysgourmetpasta.com/">Lilly's Gourmet Pasta Express ($$)</a> -1528 Tremont St, Boston, MA 02120 - Italian takeout.</li>
<li><a href="https://www.mikesdonutsboston.com/">Mike's Donuts ($)</a> - 1524 Tremont St A, Boston, MA 02120 - Breakfast.</li>
</ol>
-
-
+
+
<!--#include virtual="/2024/includes/footer.html"-->
<!--#include virtual="/2024/includes/common_js.html"-->
</div>
<div class="panel-body">
<p>
- <a target="_blank" href="https://live.fsf.org/stream-room-jupiter-lowres.webm">LP Workshop</a> (480p)</br>
+ <a target="_blank" href="https://live.fsf.org/stream-room-jupiter-lowres.webm">LP Workshop</a> (480p)</br>
<!--
<a target="_blank" href="https://live.fsf.org/stream-room-jupiter-lowres.webm">Jupiter</a> (480p)</br>
<a target="_blank" href="https://live.fsf.org/stream-room-saturn-lowres.webm">Saturn</a> (480p)</br>
<a target="_blank" href="https://live.fsf.org/stream-room-neptune-lowres.webm">Neptune</a> (480p)</br>
- <a target="_blank" href="https://live.fsf.org/libreplanet-workshop-lowres.webm">LP Workshop</a> (480p)</br>
+ <a target="_blank" href="https://live.fsf.org/libreplanet-workshop-lowres.webm">LP Workshop</a> (480p)</br>
-->
</p>
</div>
<!-- <li class="fsf-donate"><a href="https://my.fsf.org/lp-call-for-sessions/"><strong>Submit a Session</strong></a></li> -->
<!--<li class="fsf-donate"><a href="/2024/live/"><strong>Live</strong></a></li>-->
<!--<li class="fsf-donate"><a href="https://play.libreadventure.fsf.org/"><strong>LibreAdventure</strong></a></li>-->
- <li class="fsf-donate"><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=125">Register to the in-person event!</a></li>
- <li class="fsf-donate"><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=126">Register to the online event!</a></li>
+ <li class="fsf-donate"><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=125">Register to the in-person event!</a></li>
+ <li class="fsf-donate"><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=126">Register to the online event!</a></li>
<li class="fsf-donate"><a href="https://media.libreplanet.org/u/libreplanet/tag/libreplanet-2023-video/">Watch the LibrePlanet 2023 Videos</a></li>
<li><a href="/2024/program">Schedule</a></li>
<li><a href="/2024/speakers">Bios & Talks</a></li>
-<li><a href="/2024/getting-around">Lodging & Travel</a></li>
-<li><a href="/2024/other-activities">Other Activities</a></li>
+<li><a href="/2024/getting-around">Lodging & Travel</a></li>
+<li><a href="/2024/other-activities">Other Activities</a></li>
<li><a href="/2024/covid-19-policy/">COVID-19 Policy</a></li>
<li><a href="/2024/safe-space-policy/">Safe Space Policy</a></li>
<li><a href="/2024/sponsors">Sponsors and Exhibitors</a></li>
<!--<li><a href="/2024/volunteer/">Volunteer</a></li>-->
-<li><a href="https://lists.gnu.org/mailman/listinfo/libreplanet-discuss">Join the Discussion List</a></li>
+<li><a href="https://lists.gnu.org/mailman/listinfo/libreplanet-discuss">Join the Discussion List</a></li>
<!-- <li><a href="https://www.fsf.org/about/contact/">Contact Us</a></li> -->
<!--<li><a href="https://www.fsf.org/blogs/community/free-software-awards-recognize-those-who-advance-our-freedom-by-october-28th">FSF Award Nomination</a></li>-->
<!-- <ul> -->
<!-- <li></li> -->
<!-- </ul> -->
-
+
</ul>
<li><strong>03/27/2024</strong> <a href="https://www.fsf.org/news/alyssa-rosenzweig-who-spearheaded-the-reverse-engineering-of-apples-gpu-to-keynote-libreplanet">Alyssa Rosenzweig, who spearheaded the reverse-engineering of Apple's GPU, to keynote LibrePlanet</a></li>
<li><strong>09/06/2023</strong> <a href="https://www.fsf.org/blogs/community/call-for-sessions-for-libreplanet-2024-cultivating-community-now-open">Call for sessions for LibrePlanet 2024: Cultivating Community now open </a></li>
<li><strong>04/18/2023</strong> <a href="https://www.fsf.org/blogs/community/watch-the-libreplanet-charting-the-course-videos-on-gnu-mediagoblin-and-peertube">Watch the LibrePlanet: Charting the Course videos on GNU MediaGoblin and PeerTube</a></li>
-</ul>
+</ul>
alt="[ Collage of headshots of ten LibrePlanet 2024 speakers: David Wilson, Hayley Tsukuayama, Olivia Gallucci, T. Kim Nguyen, Christina Haralanova, Jurgen Gaeremyn, Crescent Omeje, Corwin Brust, Matt Campbell, and Shivanand Edrami.]"></a>
<li class="item">
- <a href="https://www.fsf.org/news/hayley-tsukayama-will-speak-about-grassroots-activism-at-libreplanet-2024"><img src="https://static.fsf.org/nosvn/libreplanet/2024/communications/keynote-hayley768x461.png"
+ <a href="https://www.fsf.org/news/hayley-tsukayama-will-speak-about-grassroots-activism-at-libreplanet-2024"><img src="https://static.fsf.org/nosvn/libreplanet/2024/communications/keynote-hayley768x461.png"
alt="[ Photo of Hayley Tsukuayama with the LibrePlanet logo and a text saying LibrePlanet 2024: Cultivating Community will feature a keynote by Hayley Tsukuayama about grassroots activism.]"></a>
<li class="item">
<div class="row margin-top">
<div class="col-sm-8"> <!-- start of main content -->
- <p>In the coming weeks, the following workshops and talks will be streamed in room <a target="_blank" href="https://live.fsf.org/stream-room-jupiter.webm">Jupiter</a> (scroll down and check the sidebar to the right for low resolution and audio stream options):</p>
+ <p>In the coming weeks, the following workshops and talks will be streamed in room <a target="_blank" href="https://live.fsf.org/stream-room-jupiter.webm">Jupiter</a> (scroll down and check the sidebar to the right for low resolution and audio stream options):</p>
<h3><a href="https://www.fsf.org/events/libreplanet-workshop-may-8-leanweb-a-ruby-out-of-rails-web-framework-for-static-and-dynamic-content-by-felix-freeman">LeanWeb: A Ruby (out of rails) web framework for static and dynamic content</a></h3>
<li><strong>Time:</strong> Monday, May 08, 12:00–13:30 EDT (16:00–17:30 UTC)</li>
<li><strong>Format:</strong> Online workshop</li>
<li><strong>Presenter:</strong> Felix Freeman</li>
-</ul>
+</ul>
<h3><a href="https://www.fsf.org/events/libreplanet-workshop-digital-colonialism-surveillance-capitalism-and-a-libre-software-future-by-jose-castro">Digital colonialism, surveillance capitalism, and a libre software future</a></h3>
<li><strong>Time:</strong> Tuesday, May 30, 12:00–12:45 EDT (16:00–16:45 UTC)</li>
<li><strong>Format:</strong> Online talk</li>
<li><strong>Presenters:</strong> Harm de Vries and Leandro von Werra</li>
-</ul>
+</ul>
<h3><a href="https://www.fsf.org/events/libreplanet-talk-june-5-worldvista-ehr-version-of-the-department-of-veterans-affairs-electronic-health-record">WorldVistA EHR version of the Department of Veterans Affairs Electronic Health Record</a></h3>
<strong>High resolution videos:</strong><br><br>
-
+
<!-- <a href="https://live.fsf.org/libreplanet-workshop.webm">https://live.fsf.org/libreplanet-workshop.webm</a><br> -->
-
+
<a href="https://live.fsf.org/stream-room-jupiter.webm">https://live.fsf.org/stream-room-jupiter.webm</a><br>
<!-- <a href="https://live.fsf.org/stream-room-saturn.webm">https://live.fsf.org/stream-room-saturn.webm</a><br>
<a href="https://live.fsf.org/stream-room-neptune.webm">https://live.fsf.org/stream-room-neptune.webm</a><br><br>
<!--
<a href="https://live.fsf.org/libreplanet-workshop-lowres.webm">https://live.fsf.org/libreplanet-workshop-lowres.webm</a><br> -->
-
-
+
+
<a href="https://live.fsf.org/stream-room-jupiter-lowres.webm">https://live.fsf.org/stream-room-jupiter-lowres.webm</a><br>
<!--
<a href="https://live.fsf.org/stream-room-saturn-lowres.webm">https://live.fsf.org/stream-room-saturn-lowres.webm</a><br>
<!--
<a href="https://live.fsf.org/libreplanet-workshop.ogg">https://live.fsf.org/libreplanet-workshop.ogg</a><br>
-->
-
-
+
+
<a href="https://live.fsf.org/stream-room-jupiter.ogg">https://live.fsf.org/stream-room-jupiter.ogg</a><br>
<!--
<a href="https://live.fsf.org/stream-room-saturn.ogg">https://live.fsf.org/stream-room-saturn.ogg</a><br>
<p><a href="#walk">Saturday night walk</a></p>
<p><a href="#diversity">Diversity breakfast</a></p>
<p><a href="#BoF">Birds of a Feather social events</a></p>
- <p><a href="#member-meeting">Annual FSF associate members meeting</a></p>
- <p><a href="#newcomer">Newcomer orientation</a></p>
- <p><a href="#licensing">Licensing table</a></p>
+ <p><a href="#member-meeting">Annual FSF associate members meeting</a></p>
+ <p><a href="#newcomer">Newcomer orientation</a></p>
+ <p><a href="#licensing">Licensing table</a></p>
</div>
</div>
<h2 id="office">Friday night "open" office</h2>
<li><strong>Location:</strong> Wentworth Institute of Technology to Quincy Market, via Newbury Street and the Boston Gardens and Common
<li><strong>Sign up:</strong> Contact <a href="mailto:info@fsf.org">info@fsf.org</a></li>
</ul>
-<hr>
+<hr>
<h2 id="diversity">Diversity breakfast</h2>
<h3>Hosted by Savvy Smith</h3>
<p>This is a space for women, nonbinary people and all those who have been traditionally excluded from technological and social causes to feel at home and find ways for people of similar backgrounds to participate. We'll have breakfast together and can take public transport to get to the conference together afterwards. Please RSVP by emailing <a href="mailto:info@fsf.org">info@fsf.org</a>, so we can make sure there's enough food for everyone.</p>
<h2 id="licensing">Licensing table</h2>
<br>
<p>Have you ever had a question about the <a href="https://www.gnu.org/licenses/#GPL">GNU General Public License (GPL)</a> or free software licenses that you didn't find time to ask? Now you will have an unique opportunity to meet the Licensing and Compliance Lab in person and talk about anything
-related to licensing. Krzysztof and Craig will be at the registration booth on Sunday, 13:00–14:00.
+related to licensing. Krzysztof and Craig will be at the registration booth on Sunday, 13:00–14:00.
</p>
<ul>
<li><strong>Time:</strong> 13:00–14:00, Sunday, May 5, 2024</li>
<li><strong>Location:</strong> registration
-booth in the CEIS lobby of the Wentworth Institute of Technology</li>
+booth in the CEIS lobby of the Wentworth Institute of Technology</li>
<li><strong>Sign up:</strong> Not necessary</li>
</ul>
-<hr>
+<hr>
<h2 id="newcomer">Newcomer orientation</h2>
<h3>Hosted by Savvy Smith</h3>
<p>Is this your first LibrePlanet? A very warm welcome! Looking to connect with other people and to get an overview what's going on? Ask at the registration booth for our newcomer orientation.</p>
<h1>Raffle</h1>
-<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2024/sponsors">some of our generous sponsors</a>.
+<p>We'll be raffling off fabulous free software prizes, thanks to <a href="https://libreplanet.org/2024/sponsors">some of our generous sponsors</a>.
<p>All attendees get a gratis raffle ticket, FSF members get a second gratis ticket, and everyone can buy more chances to win at the GNU Press table during LibrePlanet, as well as at the Friday open house and Saturday evening social events! Buy one ticket for $2, 3 tickets for $5, one arm's length for $20, cash or credit. FSF staff and board members are not eligible to participate in the raffle.</p>
<!-- <li>Subscriptions to <a href="https://jmp.chat/">JMP</a></li> -->
<!-- <li>ChaosKeys from <a href="https://altusmetrum.org/">Altus Metrum, LLC</a></li> -->
<!-- </ul> -->
-
+
<!--#include virtual="/2024/includes/footer.html"-->
.exhibitor-info { max-width: 650px; margin: 0 auto 40px auto; }
h2 a { border: none; }
.irc-client { display: block; width: 650px; height: 500px; margin: 0 auto; }
-</style>
+</style>
<!--<h2>Exhibitors</h2>
-<p>The lively Exhibit Hall at LibrePlanet will be open on both conference days, in person, and online at LibreAdventure with something for everyone. Be sure to take a virtual stroll around and meet exhibitors who care about software freedom.</p>-->
+<p>The lively Exhibit Hall at LibrePlanet will be open on both conference days, in person, and online at LibreAdventure with something for everyone. Be sure to take a virtual stroll around and meet exhibitors who care about software freedom.</p>-->
<br>
</div></div>
</p>
<br>
-<div style="clear:both"><br></div>
+<div style="clear:both"><br></div>
<div class="exhibitor-info">
<p> <div class="hover_img">
</div></div>
</p>
<br>
-<div style="clear:both"><br></div>
+<div style="clear:both"><br></div>
<div class="exhibitor-info">
<p> <div class="hover_img">
<p>Sponsorship and underwriting opportunities can be found in this <a href="LibrePlanet2024-Packages.pdf">informational flyer</a> or in this year's <a href="LibrePlanet2024-Sponsorship.pdf">prospectus</a>.
-<p>All materials must be submitted by <b>April 24, 2024,</b> in order to guarantee visual inclusion. To inquire about sponsoring the event, or if you have any questions, please email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</p>
+<p>All materials must be submitted by <b>April 24, 2024,</b> in order to guarantee visual inclusion. To inquire about sponsoring the event, or if you have any questions, please email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</p>
<p><b><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=129">Register to the event as a sponsor!</a></b> Please only use this link after confirmation from the FSF!</p>
<h2>Become a LibrePlanet 2024 exhibitor</h2>
<br>
-<p>The lively Exhibit Hall at LibrePlanet is centrally located and will be open on both conference days (times TBC). </p>
+<p>The lively Exhibit Hall at LibrePlanet is centrally located and will be open on both conference days (times TBC). </p>
-<p>To inquire about early registration pricing for exhibitors, or if you have any other questions, please email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</p>
+<p>To inquire about early registration pricing for exhibitors, or if you have any other questions, please email <a href="mailto:campaigns@fsf.org">campaigns@fsf.org</a>.</p>
-<p>We will be offering early registration pricing for exhibitors <b>until March 20, 2024</b>. Nonprofits and individual projects are eligible for a discounted exhibitors price. All materials must be submitted by <b>April 24, 2024,</b> in order to guarantee visual inclusion.</p>
+<p>We will be offering early registration pricing for exhibitors <b>until March 20, 2024</b>. Nonprofits and individual projects are eligible for a discounted exhibitors price. All materials must be submitted by <b>April 24, 2024,</b> in order to guarantee visual inclusion.</p>
<p><b><a href="https://my.fsf.org/civicrm/event/info?reset=1&id=129">Register to the event as an exhibitor!</a></b> Please only use this link after confirmation from the FSF!</p>
</div></div>
</p>
<br>
-<div style="clear:both"><br></div>
+<div style="clear:both"><br></div>
<div class="exhibitor-info">
<p> <div class="hover_img">
<!--#include virtual="/2024/includes/sidebar.html"-->
<h2>Unfortunately, pre-registration is full.</h2>
-<p>We will do our best to accomodate walk-up registrations.
+<p>We will do our best to accomodate walk-up registrations.
Prices are as follows:</p>
<ul>
<li>FSF members and students: $ 0</li>
<!--#include virtual="/2022/includes/sidebar.html"-->
##Unfortunately, pre-registration is full.
-We will do our best to accomodate walk-up registrations.
+We will do our best to accomodate walk-up registrations.
Prices are as follows:
* FSF members and students: $ 0
<ul>
<li><a href="http://fosscon.org/"> June 19th, FOSSCON in Rochester, NY</a></li>
-
-
+
+
</ul>
}
h3 {
- font-size: 20px;
+ font-size: 20px;
}
-
+
.lp-banner {
box-shadow: 0px 1px 5px rgba(255, 255, 255, 0.7);
margin-bottom: 20px;
.fsf-donate-button {
- margin-left: 24%;
+ margin-left: 24%;
margin-top: 25px;
margin-bottom: 10px;
width:56%;
-}
+}
@media (max-width:768px) {
.fsf-donate-button {
- margin-left: 34%;
+ margin-left: 34%;
margin-top: 25px;
margin-bottom: 10px;
width:32%;
- }
+ }
}
@media (min-width:320px) and (max-width:360px) {
.fsf-donate-button {
- margin-left: 24%;
+ margin-left: 24%;
margin-top: 25px;
margin-bottom: 10px;
width:56%;
data-setup='{"height": 477,
"width": 848 }'>
<source src="http://media.libreplanet.org/mgoblin_media/media_entries/49/LibrePlanet__8A__848x477__3.webm"
-
+
type="video/webm; codecs='vp8, vorbis'">
<div class="no_html5">Sorry, this video will not work because
- your web browser does not support HTML5
- video.<br>You can get a modern web browser that
+ your web browser does not support HTML5
+ video.<br>You can get a modern web browser that
can play this video at <a href="http://getfirefox.com">
http://getfirefox.com</a>!</div>
</video>
<html lang="en">
<head>
<meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="/2014/assets/css/bootstrap.min.css" rel="stylesheet" media="screen" />
- <link href="/2014/assets/css/custom.css" rel="stylesheet" media="screen" />
+ <link href="/2014/assets/css/custom.css" rel="stylesheet" media="screen" />
<link href="https://static.fsf.org/fsforg/img/favicon.ico" rel="shortcut icon">
<title>LibrePlanet 2014</title>
</div> <!-- end of lp banner -->
<div class="container"> <!-- start of container -->
- <div class="row">
+ <div class="row">
<div class="col-sm-3"> <!-- start of nav items -->
<ul class="nav nav-pills nav-stacked nav-padding-top">
<!-- start of carousel -->
<div id="lpc-carousel" class="carousel slide">
-
+
<!-- wrapper for slides -->
<ul class="carousel-inner list-unstyled">
</a></p>
</li>
-->
-
+
<!-- controls -->
<a class="left carousel-control" href="#lpc-carousel" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left"></span>
<p class="lead">
LibrePlanet is an annual conference for free software enthusiasts. LibrePlanet brings together software developers, policy experts, activists and computer users to learn skills, share accomplishments and face challenges to software freedom. Newcomers are always welcome, and LibrePlanet 2014 will feature programming for all ages and experience levels.</p>
<p>
- This year, the theme of LibrePlanet is "Free Software, Free Society." How can free software protect journalists, whistleblowers, activists, and regular computer users from government and corporate surveillance? How can free software, or free software values like copyleft, community development, and transparency, be used by people fighting to create free societies around the world? What challenges are standing between us and our goal of free software ubiquity? With your help, we'll tackle these questions and more at LibrePlanet 2014, March 22-23 in Cambridge, MA.
+ This year, the theme of LibrePlanet is "Free Software, Free Society." How can free software protect journalists, whistleblowers, activists, and regular computer users from government and corporate surveillance? How can free software, or free software values like copyleft, community development, and transparency, be used by people fighting to create free societies around the world? What challenges are standing between us and our goal of free software ubiquity? With your help, we'll tackle these questions and more at LibrePlanet 2014, March 22-23 in Cambridge, MA.
</p>
<p>FSF members and students attend LibrePlanet at no cost! <a href="https://my.fsf.org/associate/support_freedom">Become a member now.</a> If you're interested in attending but need help, we also have <a href="https://libreplanet.org/2014/scholarships">scholarships</a> avalaible.</p>
</div> <!-- end of LP14 text -->
<html lang="en">
<head>
<meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="/2014/assets/css/bootstrap.min.css" rel="stylesheet" media="screen" />
- <link href="custom.css" rel="stylesheet" media="screen" />
+ <link href="custom.css" rel="stylesheet" media="screen" />
<link href="https://static.fsf.org/fsforg/img/favicon.ico" rel="shortcut icon">
<title>LibrePlanet 2014</title>
<div class="container"> <!-- start of container -->
<div class="row">
<div class="lp-head"> <!-- start of lp header -->
- <div class="col-sm-3">
+ <div class="col-sm-3">
<a href="/2014/">
<img src="http://static.fsf.org/nosvn/libreplanet/2014/site/logo/lp_2014_logo.png"
class="img-responsive"
</div> <!-- end of lp banner -->
<div class="container"> <!-- start of container -->
- <div class="row">
+ <div class="row">
<div id="lp-nav" class="col-sm-3"> <!-- start of nav items -->
<ul class="nav nav-pills nav-stacked">
<!-- start of carousel -->
<div id="lpc-carousel" class="carousel slide">
-
+
<!-- wrapper for slides -->
<ul class="carousel-inner list-unstyled">
<li class="item">
<p class="lead carousel-caption-tl">
<a class="btn btn-default" href="https://libreplanet.org/2014/scholarship_donation">Donate to the scholarship fund</a> to help us bring new people to LibrePlanet.
</p>
-
- </li>
+
+ </li>
<!--
<li class="item">
<img src="//static.fsf.org/nosvn/libreplanet/2014/site/carousel/lp13-room-110.jpg"
alt="[ LibrePlanet 2013 discussion ]">
- <p class="lead carousel-caption-bl">
+ <p class="lead carousel-caption-bl">
We're collecting suggestions for<br>LibrePlanet 2014
-
+
<a class="btn btn-default"
href="https://libreplanet.org/wiki/LibrePlanet:Conference/2014/Conference_brainstorm">
Share your ideas
</a>
and be part of LibrePlanet 2014!
</p>
-
- </li>
+
+ </li>
-->
<li class="item">
<img src="//static.fsf.org/nosvn/libreplanet/2014/site/carousel/lp13-printer.jpg"
<p class="lead">
LibrePlanet is an annual conference for free software enthusiasts. LibrePlanet brings together software developers, policy experts, activists and computer users to learn skills, share accomplishments and face challenges to software freedom. Newcomers are always welcome, and LibrePlanet 2014 will feature programming for all ages and experience levels.</p>
<p>
- This year, the theme of LibrePlanet is "Free Software, Free Society." How can free software protect journalists, whistleblowers, activists, and regular computer users from government and corporate surveillance? How can free software, or free software values like copyleft, community development, and transparency, be used by people fighting to create free societies around the world? What challenges are standing between us and our goal of free software ubiquity? With your help, we'll tackle these questions and more at LibrePlanet 2014, March 22-23 in Cambridge, MA.
+ This year, the theme of LibrePlanet is "Free Software, Free Society." How can free software protect journalists, whistleblowers, activists, and regular computer users from government and corporate surveillance? How can free software, or free software values like copyleft, community development, and transparency, be used by people fighting to create free societies around the world? What challenges are standing between us and our goal of free software ubiquity? With your help, we'll tackle these questions and more at LibrePlanet 2014, March 22-23 in Cambridge, MA.
</p>
<p>FSF members and students attend LibrePlanet at no cost! <a href="https://my.fsf.org/associate/support_freedom">Become a member now.</a> If you're interested in attending but need help, we also have <a href="https://libreplanet.org/2014/scholarships">scholarships</a> avalaible.</p>
</div> <!-- end of LP14 text -->
</h2>
</div>
<div class="panel-body">
-
+
<p><a href="#saturday">Saturday sessions</a></p>
<p><a href="#sunday">Sunday sessions</a></p>
<p><a href="#social">Social events</a></p>
<html lang="en">
<head>
<meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link href="/2014/assets/css/bootstrap.min.css" rel="stylesheet" media="screen" />
- <link href="/2014/assets/css/custom.css" rel="stylesheet" media="screen" />
+ <link href="/2014/assets/css/custom.css" rel="stylesheet" media="screen" />
<link href="https://static.fsf.org/fsforg/img/favicon.ico" rel="shortcut icon">
<title>Speakers — LibrePlanet 2014</title>
</div> <!-- end of lp banner -->
<div class="container"> <!-- start of container -->
- <div class="row">
+ <div class="row">
<div class="col-sm-3"> <!-- start of nav items -->
<p class="text-center lp-home">
</div> <!-- end of nav items -->
<div class="col-sm-9"> <!-- start of content column -->
- <h2>Speakers</h2>
+ <h2>Speakers</h2>
<table>
-<!-- Experimental large image formatting
+<!-- Experimental large image formatting
<tr>
<td colspan="2"><h3>Sue Gardner</h3>
</td>
<p>Sue Gardner has been described as the librarian to the world and the Mother Teresa of the Internet. In 2009, she was voted by Huffington Post readers as their media game-changer of the year and in 2012, Forbes magazine named her the world's 70th most powerful woman. Her work is motivated by the desire to ensure that everyone in the world has free and easy access to the information they want and need.</p>
</tr>
-->
-
-
+
+
<tr class="speaker">
<td class="speaker-photo" style="padding-top:23px"><img src="//static.fsf.org/nosvn/libreplanet/2014/site/speakers/sue_gardner.jpg" alt="Sue Gardner">
<td><h3>Sue Gardner, <a href="https://wikimedia.org">Wikimedia Foundation</a></h3><p>Since 2007, Sue Gardner has served as the Executive Director of the Wikimedia Foundation, the global non-profit that operates <a href="https://www.wikipedia.org/">Wikipedia</a>. Wikipedia is the world's largest and most popular encyclopedia, which is free to use and free of advertising. Wikipedia contains more than 30 million volunteer-authored articles in over 280 languages, and is visited by more than 516 million people every month, making it the fifth most popular website in the world.</p>
Propose a session
</a>
</p>
- </li>
+ </li>
<li class="item">
<img src="//static.fsf.org/nosvn/libreplanet/2014/site/carousel/lp13-printer.jpg"
alt="[ Aleph Objects' Lulzbot 3D printer ]">
alt="[ LibrePlanet 2013 discussion ]">
<p class="lead carousel-caption-bl">
We're collecting suggestions for LibrePlanet 2014
-
+
<a class="btn btn-default"
href="https://libreplanet.org/wiki/LibrePlanet:Conference/2014/Conference_brainstorm">
Share your ideas