Social Networking Technology Resources for Genealogical Societies

= Purpose =

As might be expected, a search of the FamilySearch Wiki using terms like Unix, shell, vi and htaccess and other 'technological' terms does not result in too many hits. However, there is a need for a genealogy focused presentation of technical materials for members of Genealogical Societies to use to create and enhance their on-line presence.

This page will serve as a focal point for technological discussions and resources that may be used by Genealogical Societies to create, enhance and maintain their virtual presence.

= Working in the Unix environment =

Most web hosting services are based on a Unix or Unix-like environment. Knowledge of the areas listed below is not a requirement for you to establish a web presence. However, understanding the underlying technologies will allow you to have much more control over your sites appearance and security.

Fundamental security issues
Specific security needs will be different for every site, but there are some basic suggestions that are universal:


 * Perform regular backups of your files and your MySQL database tables
 * Keep current copies of your backups somewhere else
 * Change your passwords frequently
 * Keep your application software up to date. Hackers exploit security holes in older versions of software.
 * Restrict access to known hacker sites using an .htaccess file
 * Restrict known PHP exploits by using PHP.ini
 * Schedule and review the output of the 'find ctime -l' command (lists files that have been changed recently, which may be an indication of malicious activity) daily
 * If you have installed 'off the shelf' Wiki/Blog/CMS packages that create tables in MySQL consider changing the default table names (refer to the individual packages documentation to see if this is possible or even recommended). This may fool malicious code that does find its way to your server
 * If possible, disable displaying the version of your 'off the shelf' packages. This may throw off malicious software that is targeting specific versions of your software.

.htaccess
.htaccess is a file that can be created on your web site to provide your web server with special instructions to handle a variety of tasks such as page redirection and security. The following links provide more information:


 * A Quick Introduction to htaccess
 * 5 htaccess Tricks Every Webmaster Should Know
 * The Ultimate htaccess

php.ini
If you are using a web hosting service you start out with their default settings. These are not always in your best interest. One area where it pays to tighten security a bit involves PHP. PHP is a program commonly used to enhance web pages. Even if you don't write programs yourself it is often used to write Blog, Wiki, CMS and other popular types of software packages that you may be using. Even if you are not running any of those (at this point one has to wonder why exactly you do have a web hosting service but we won't go there) PHP is often used by hackers to exploit weaknesses in vulnerable sites.

All you need to do is create a file called 'php.ini' in each of your public directories (basicly any in and under your public_html directory) and put the appropriate commands. The following example is by no means exhaustive but will give you an idea of what one looks like: disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open open_basedir = /your/systems/public_html safe_mode = 0 register_globals = 0 allow_url_fopen = 0 This is a deep subject: see the following for more information:


 * Description of core php.ini directives at php.net

Backups
For all too many people the first time they consider the question of how (or even if) their web hosting service backs up their data is the day after their data has been irretrieveably lost. Most service providers only keep very recent backups (1 or 2 days). Unfortunately, by the time most people realize that they have serious problems on their site the backups contain corrupted data.

Good backups are your last and best line of defense.

cron
cron is a Unix utility that allow you to schedule and run programs (such as backups) on an established schedule. If your Unix system allows you to do so, you could submit an entry that would look like this: 00 01 * * 0 /some/dir/my_backups This would tell the system to run the 'my_backups' program located in the /some/dir directory at 1:00 am every Sunday. The meanings of the five fields are provided below. * * * * * ^ ^ ^ ^ ^ +- min (0 - 59) Note that an asterick will be interpreted as every day of week/month/day/hour/minute. You can also have several entries seperated by commas. In the following example my_logs would be run at 1:05 pm every Monday, Wednesday and Friday. 05 13 * * 1,3,5 /some/dir/my_logs If you are lucky your hosting service will provide a GUI interface that makes entering and managing entries a little easier.
 * | | | +- day of week (0 - 6) (Sunday=0)
 * | | +--- month (1 - 12)
 * | +- day of month (1 - 31)
 * +--- hour (0 - 23)
 * +--- hour (0 - 23)

tar
tar is a Unix utility that allows you to create backup files. Here is an example: cd /my/system/public_html

tar --create --gzip --file="Documents_01Jan2011" Documents These commands would create a zipped file with the named "Documents_01Jan2011" which would contain all files and directories contained in the /my/system/public_html/Documents directory.

It is common to group a series of backup commands into a batch file and to schedule that batch file to be run in cron.

See your systems man pages for tar to see details on the options as these vary from implementation to implementation.

Text Editors
Creating and modifying files when logged into the shell requires the use of a text editor. vi is one that is provided with virtually every Unix installation (there are others). See the writeup on the vi editor for more information on how to use vi.

Putty
PuTTy is a free terminal emulation software package that allows you to establish telnet or ssh sessions from your PC. See this outstanding web site for more information about this useful tool.

Shell Programming
The shell is Unix-speak for the interface with the operating system. If you connect to your web hosting service using a protocol like telnet or ssh (using a terminal emulation software package like PuTTy) you will be interacting with the shell.

This is not an area for the faint of heart... if your only experience with computers has been with Windows or a Mac you are going to find that blinking dollar sign to be very unhelpful. You can do very powerful things here, but it does require a basic understanding of the file structure, some of the basic shell commands and familiarity with an editor like vi.

Note that many hosting services do not allow access to the shell by default. You may need to contact them and request permission.

Once you have access to the shell you can create files with valid commands in them. One common use is to create backup files.Here is a typical sample presented only to illustrate the basic concepts. MON=`date | cut -c5-7` DAY=`date | cut -c9-10` YR=`date | cut -c25-28`

TIM=`date | cut -c12-19 | sed 's/:/_/g'` DAT_TIM=`echo $DAY"_"$MON"_"$YR"_"$TIM`

cd /home8/dallasge/public_html FILENAME=$BUD"/"$DAT_TIM"_public_html_Production.tar.gz" tar --create --gzip --file=$FILENAME Production After creating and saving this file (say, for example, in a file named DailyBackups) you would tell the shell that it was an executable program my changing the file attributes using the chmod command: chmod +x DailyBackups You could then run the file by typing this at the shell prompt (from the same directory): DailyBackups This would tell the system to run your shell and create a backup file named 29_Jan_2011_01_30_02_public_html_Production.tar.gz

MySQL
MySQL is a popular relational database provided by many web hosting services. If you subscribe to one of these services and have loaded one of their Blog, Wiki or Content Management System packages chances are you are using MySQL and don't even know it!

You should be able access MySQL directly: see the information provided by your Web Hosting provider.

MySQL Forge has an impressive colletion of MySQL tutorials.

= PHP =

PHP is a powerful language that can be used to enhance your web pages. It is also commonly used to create many of the powerful applications (such as Blogs, Wiki's and Content Management Systems) that you may use on your web site, so even a high level understanding of PHP can be very useful.


 * php.net has a simple tutorial
 * w3schools.com has a great reference and a PHP Tutorial

= CSS, XML and HTML =

If you dabble in these protocols the www.w3schools.com is a must see site. It has tutorials, syntax references and loads of interactive examples.

= Google Analytics =

Google Analytics is a powerful and free resource that allows you to track and analyze the utilization of your web site. You need to log in and register your site: when you do you will be provided with some HTML code to copy and paste into the appropriate place on your web site. Once you do, Google Analytics will start tracking usage of your web site and will provide you with a wide variety of reports on their site.

= Content Management Software =

As the name implies, a Content Management Software (CMS) package provides a framework that is used to create the web site. Once the initial structure is created this allows users to focus on the content rather than on the mechanics of presenting the information. This has several advantages:


 * They provide a very consistent look and feel for the entire web site.
 * Web sites tend to be very standards compliant. This means that the content will be displayed 'correctly' on all browsers and all types of devices (including often overlooked smart phones).
 * Since knowledge of HTML and CSS is not required, it 'lowers the barrier' for creating and managing content. This may make it possible for a society to have more people creating content.

Joomla
An open source option. Some useful links are:


 * What is Joomla? - Marketing hype on the main Joomla web site
 * Beginners Guide (a.k.a. 'Absolute Beginners Guide to Joomla!', 'Novices' and 'What is Joomla') - where to go if you are contemplating installing and using Joomla
 * Joomla 1.5 Quick Start - Free on-line videos explaining how to install and use Joomla
 * Discussion Forums - lots of good help available here
 * Security Checklist - an invaluable reference with excellent advice. Best read before your site is hacked. See the section titled 'The most important guidelines' for instructions on how to subscribe to Joomla Security News (email or RSS) so you can receive notifications whenever critical updates are released.
 * See the Dallas Genealogical Society web site for one example of a genealogical society site created using Joomla.

MODx

 * MODx

Drupal

 * Drupal

e197

 * e107

Mambo

 * Mambo

XOOPS

 * XOOPS

PHP-Nuke

 * PHP-Nuke

pwpwcms

 * phpwcms

= Wiki's =

A wiki is nothing more than a web page that can be modified by anybody who can view it. This page is a wiki: register with Family Search, click on the 'Edit This Page' button at the top of your screen and you can change this page!

Obviously there is a lot more that that to know... one place to start is this Wiki Overview page.

Popular Wiki's

 * MediaWiki - What Wikipedia uses...
 * WikkaWiki - One attraction is the ability to create private/closed wiki's
 * PmWiki
 * DokuWiki

= Blogs =

A Blog is just a specialized web page. The name 'Blog' is short for WeB log. Characteristics include the following:


 * A Blog is usually focused on a specific topic
 * It consists of a series of posts that are usually brief
 * The most recent post is displayed first
 * Posts are organized by topics
 * Older posts are archived
 * Tags can be assigned to posts to facilitate searching
 * Readers may be allowed to post and/or comment on posts

For a more in-depth exlanation see this Blog Overview page.

Popular Blogging Software

 * eBlogger - Free, provided (and hosted) by Google
 * WordPress - Also free, although you must have your own server or a web hosting service to load it

For more information see BlogBasics. They have more tutorials and discussions about hosting options.

Related pages on Family Search
Blog Your Way to Genealogical Success

= Facebook =

Utilizing FaceBook to reach out to younger genealogists is something that all societies should consider.

= Twitter =

Twitteris another tool that is probably under utilized by most societies.

The use of HashTags to post comments from events like conferences and seminars (like RootsTech) has become popular recently.


 * See Hashtags on Twitter: How do you follow them on contentious.com for more information

= Podcasts =

A podcast is an on-line audio recording. This could be a useful technique for getting original content on-line for any society.

See How to Create Your Own Podcast - A Step-by-Step Tutorial.

= RSS =

RSS stands for Really Simple Syndication. This is a technology that allows you to 'subscribe' to selected web site, Blogs and/or Wiki's and receive content from them whenever it changes.

See What is RSS on PROBLOGGER for more information.

= Creating Web-Based Presentations =

If you have PowerPoint and a microphone you can create your own web-ready Flash presentations! See how the Dallas Genealogical Society is doing this using a free software package called authorPoint from authorgen: See the Overview

= Personal Digital Archiving =

Preservation and archiving must be a fundamental part of your societies strategy.

The Dallas Genealogical Society recently had a presentation on Personal Digial Archiving: See the web page that includes a link to a Flash version of the presentation.

= Windows Editors =

If you are a programmer working on a PC these editors may make your life easier.

Komodo Edit
This is a phenominal editor that supports HTML, PHP, Perl and many other languages and environments. It is hard to believe that it is free (although you can purchase a more powerful version). Available from the ActiveState web site.

Vim
If you are a die hard vi fan then you are going to love Vim... it is a full blown implementation of the venerable vi editor that has been house broken to run in Windows. See www.vim.org.

= 'Back End' Services  =

Some aspects of running a society may be too important or too complicated for home grown solutions... There are alternatives focused on the not for profit organization.

Neon

 * Stands for 'Nonprofit Enterprise Online Network'. A package of services offered by Z2 Systems. They charge for their services but you can choose the modules you want, and the fee is based on the size of your organization.

= Related Family Search Resources =

The Power of Community and the Web 2.0 Popular Social Networks for Genealogy Use the Internet for Family History Research - This one needs some updating All aTwitter about Wave: Ten Disruptive New Web Services