From 87ee48bd84bc712ebdccd8286f01b8da3e5c3cba Mon Sep 17 00:00:00 2001 From: redmatrix Date: Wed, 5 Oct 2016 17:25:49 -0700 Subject: update hook documentation --- doc/hook/bbcode.bb | 5 +++++ doc/hook/bbcode_filter.bb | 7 +++++++ doc/hooklist.bb | 5 ++++- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 doc/hook/bbcode_filter.bb (limited to 'doc') diff --git a/doc/hook/bbcode.bb b/doc/hook/bbcode.bb index 2996a8528..f6b8711b0 100644 --- a/doc/hook/bbcode.bb +++ b/doc/hook/bbcode.bb @@ -1 +1,6 @@ [h2]bbcode[/h2] + + +Called at end of bbcode to html conversion. + +Hook argument contains the converted text string. diff --git a/doc/hook/bbcode_filter.bb b/doc/hook/bbcode_filter.bb new file mode 100644 index 000000000..efeb2e1b0 --- /dev/null +++ b/doc/hook/bbcode_filter.bb @@ -0,0 +1,7 @@ +[h2]bbcode_filter[/h2] + + +Called at beginning of bbcode to html conversion. + +Hook argument contains the text string to be converted. + diff --git a/doc/hooklist.bb b/doc/hooklist.bb index e48fbee7c..d190166f0 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -68,7 +68,10 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the called when converting bbcode to markdown [zrl=[baseurl]/help/hook/bbcode]bbcode[/zrl] - Called when converting bbcode to HTML + Called at end of converting bbcode to HTML + +[zrl=[baseurl]/help/hook/bbcode_filter]bbcode_filter[/zrl] + Called when beginning to convert bbcode to HTML [zrl=[baseurl]/help/hook/bb_translate_video]bb_translate_video[/zrl] Called when extracting embedded services from bbcode video elements (rarely used) -- cgit v1.2.3 From 47bfb681c0595d80e01729e477ed153d5e77337a Mon Sep 17 00:00:00 2001 From: zotlabs Date: Fri, 14 Oct 2016 14:27:21 -0700 Subject: add new hook doc --- doc/hook/markdown_to_bb.bb | 5 +++++ doc/hooklist.bb | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 doc/hook/markdown_to_bb.bb (limited to 'doc') diff --git a/doc/hook/markdown_to_bb.bb b/doc/hook/markdown_to_bb.bb new file mode 100644 index 000000000..8af637c8c --- /dev/null +++ b/doc/hook/markdown_to_bb.bb @@ -0,0 +1,5 @@ +[h2]markdown_to_bb[/h2] + +Called when processing markdown to bbcode conversion such as when importing Diaspora protocol source or other markdown sources. The plugin is called post conversion. + +The function takes one argument which is the string being converted. It may be additionally processed by the plugin. diff --git a/doc/hooklist.bb b/doc/hooklist.bb index d190166f0..e67f791ae 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -320,6 +320,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/magic_auth]magic_auth[/zrl] Called when processing a magic-auth sequence +[zrl=[baseurl]/help/hook/markdown_to_bb]markdown_to_bb[/zrl] + Called when processing markdown conversion + [zrl=[baseurl]/help/hook/match_webfinger_location]match_webfinger_location[/zrl] Called when processing webfinger requests -- cgit v1.2.3 From 17091bd38c4e4e5d8b1812dd1d9efeffe0046d02 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Mon, 17 Oct 2016 22:09:41 -0700 Subject: add get_photo hook to go along with get_profile_photo hook. This allows a plugin to over-ride the permissions for cover photos or insert a different photo in place of that requested --- doc/hook/get_photo.bb | 14 ++++++++++++++ doc/hooklist.bb | 3 +++ 2 files changed, 17 insertions(+) create mode 100644 doc/hook/get_photo.bb (limited to 'doc') diff --git a/doc/hook/get_photo.bb b/doc/hook/get_photo.bb new file mode 100644 index 000000000..eaf3beffb --- /dev/null +++ b/doc/hook/get_photo.bb @@ -0,0 +1,14 @@ +[h2]get_photo[/h2] + +Called when fetching the content of photos (except for profile photos) in mod_photo. + + +Hook arguments: + +'imgscale' => integer resolution requested +'resource_id' => resource_id of requested photo +'photo' => array of matching photo table rows after querying for the photo +'allowed' => whether or not access to this resource is allowed + + + diff --git a/doc/hooklist.bb b/doc/hooklist.bb index e67f791ae..5226e7de6 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -239,6 +239,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/get_features]get_features[/zrl] Called when get_features() is called +[zrl=[baseurl]/help/hook/get_photo]get_photo[/zrl] + Called when photo content (except for profile photos) is fetched in mod_photo + [zrl=[baseurl]/help/hook/get_profile_photo]get_profile_photo[/zrl] Called when local profile photo content is fetched in mod_photo -- cgit v1.2.3 From 2abea94f8ed835a24fcceb520cb50d3527583b99 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 18 Oct 2016 15:22:38 -0700 Subject: bring the addons list up to date --- doc/addons.bb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'doc') diff --git a/doc/addons.bb b/doc/addons.bb index b83b3276a..5cc9bb81d 100644 --- a/doc/addons.bb +++ b/doc/addons.bb @@ -11,14 +11,11 @@ [*] chess - cross domain identity aware interactive chess games [*] chords - generate fingering charts and alternatives for every known guitar chord [*] custom_home - set a custom page as the hub start page -[*] dfedfix - fixes some federation issues with Diaspora releases around aug-sep 2015 [*] diaspora - Diaspora protocol emulator -[*] diaspost - crosspost to a Diaspora account (different from the Diaspora protocol emulator) -[*] dirstats - show some interesting statistics generated by the driectory server +[*] dirstats - show some interesting statistics generated by the directory server [*] docs - alternate documentation pages [*] donate - provides a project donation page [*] dwpost - crosspost to Dreamwidth -[*] embedphotos - tool to embed photos from your albums in a post [*] extcron - use an external cron service to run your hub's scheduled tasks [*] flattrwidget - provides a "Flattr Us" button [*] flip - create upside down text @@ -31,7 +28,7 @@ [*] ijpost - crosspost to Insanejournal [*] irc - connect to IRC chatrooms [*] jappixmini - XMPP chat -[*] jsupload - upload multiple photos to photo albums at once. +[*] js_upload - upload multiple photos to photo albums at once. [*] keepout - prevents nearly all use of site when not logged in, more restrictive than 'block public' setting [*] ldapauth - login via account on LDAP or Windows Active Directory domain [*] libertree - crosspost to Libertree @@ -40,6 +37,7 @@ [*] logrot - logfile rotation utility [*] mahjongg - Chinese puzzle game [*] mailhost - when using multiple channel clones, select one to receive email notifications +[*] mailtest - interface for testing mail delivery system [*] metatag - provide SEO friendly pages [*] mayan_places - set location field to a random city in the Mayan world [*] morechoice - additional gender/sexual-preference choices for profiles (not safe for work) @@ -52,8 +50,12 @@ [*] nsfw - Highly recommended plugin to collpase posts with inappropriate content [*] openclipatar - choose a profile photo from hundreds of royalty free images [*] openstreetmap - render locations and maps using OpenStreetMap +[*] pageheader - display text at the top of every page on the site +[*] phpmailer - alternate mail delivery system with more configurability [*] piwik - open source website analytics [*] planets - set location field to a random planet from Star Wars +[*] pong - classic pong game +[*] pubsubhubbub - PuSH protocol for optimised delivery to feed subscribers (required by GNU-Social protocol) [*] pumpio - crosspost to Pump.io [*] qrator - generate QR code images [*] rainbowtag - display your tag and category clouds in colours @@ -61,6 +63,7 @@ [*] redfiles - import file storage from redmatrix [*] redphotos - import photo albums from redmatrix [*] redred - Crosspost to another Red Matrix or Hubzilla channel +[*] rendezvous - group location tracking [*] rtof - Crosspost to Friendica [*] sendzid - add 'zid' auth parmaters to all outbound links, not just in-network links [*] skeleton - sample addon/plugin to demonstrate plugin development -- cgit v1.2.3 From 9e3032e919e4778aff99c2fac7b1bb102aa6c934 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 18 Oct 2016 16:26:54 -0700 Subject: more fixes to addons doc, include project addons in string extraction for translations, fix the string extractor which was looking in the old places for version info --- doc/addons.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/addons.bb b/doc/addons.bb index 5cc9bb81d..9927a2956 100644 --- a/doc/addons.bb +++ b/doc/addons.bb @@ -44,11 +44,12 @@ [*] moremoods - Additional mood options [*] morepokes - additional poke options (not safe for work) [*] msgfooter - provide legal or other text on each outgoing post -[*] noembed - use noembed.com as an addition to Hubzilla's native oembed functionality (currently broken) +[*] noembed - use noembed.com as an addition to $Projectname native oembed functionality (currently broken) [*] nofed - prevent "federation" of channel posts, maintains all interaction on your site [*] nsabait - add random terrorism related hashtags to your posts [*] nsfw - Highly recommended plugin to collpase posts with inappropriate content [*] openclipatar - choose a profile photo from hundreds of royalty free images +[*] openid - OpenID authentication and OpenID server [*] openstreetmap - render locations and maps using OpenStreetMap [*] pageheader - display text at the top of every page on the site [*] phpmailer - alternate mail delivery system with more configurability -- cgit v1.2.3 From f91031bd657f6c7bb25d93fc2c69a84846ee9f03 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 2 Nov 2016 15:48:29 -0700 Subject: allow your own likes/comments to be updated when in static update mode --- doc/dav_konqueror.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/dav_konqueror.bb b/doc/dav_konqueror.bb index 79108e1d0..97c046e46 100644 --- a/doc/dav_konqueror.bb +++ b/doc/dav_konqueror.bb @@ -1,6 +1,6 @@ [b]Using The Cloud - Konqueror[/b] -Simply visit webdavs://example.com/cloud after logging in to your hub, where "example.com" is the URL of your hub. +Simply visit webdavs://example.com/dav after logging in to your hub, where "example.com" is the URL of your hub. No further authentication is required if you are logged in to your hub in the normal manner. -- cgit v1.2.3 From 5c0ef950cc2d4b8db0aeca30cbf546a26863abc2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 17 Nov 2016 05:23:51 -0800 Subject: Minor Change: add Guest Access Token permission option. --- doc/permissions.bb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'doc') diff --git a/doc/permissions.bb b/doc/permissions.bb index 0721c763d..64690d608 100644 --- a/doc/permissions.bb +++ b/doc/permissions.bb @@ -32,6 +32,8 @@ We highly recommend that you use the "typical social network" settings when you [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks. + [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be Hubzilla members. You can set an expiration for the Access Token. + [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all. [/dl] [*= The individual permissions are:] -- cgit v1.2.3 From 9de15616a532d750bdbaf33a33cbad364f9b9137 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 17 Nov 2016 05:42:45 -0800 Subject: Added observer.webname --- doc/bbcode.html | 1 + 1 file changed, 1 insertion(+) (limited to 'doc') diff --git a/doc/bbcode.html b/doc/bbcode.html index 7a2c969eb..36f40d3f4 100644 --- a/doc/bbcode.html +++ b/doc/bbcode.html @@ -78,6 +78,7 @@ or

[dl terms="b"]
[*= First element term] First element descript
  • [observer.baseurl] website of observer
  • [observer.url] channel URL of observer
  • [observer.name] name of observer
  • +
  • [observer.webname] short name in the url of the observer
  • [observer.address] address (zot-id) of observer
  • [observer.photo] profile photo of observer
  • -- cgit v1.2.3 From 6f45fb6e14c50e7054a02d71d835258fb175f1bf Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 17 Nov 2016 05:57:09 -0800 Subject: added Guest Access Token --- doc/features.bb | 1 + 1 file changed, 1 insertion(+) (limited to 'doc') diff --git a/doc/features.bb b/doc/features.bb index 3daf403c3..578af6050 100644 --- a/doc/features.bb +++ b/doc/features.bb @@ -134,6 +134,7 @@ The options are: - Anybody on this website. - Anybody in this network. - Anybody authenticated. + - Specific people you provide a Guest Access Token to in order to access a specific item. - Anybody on the Internet. -- cgit v1.2.3 From 4d12af8396b95e50e253fd077c996349da9d64f4 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 17 Nov 2016 06:01:40 -0800 Subject: added member OpenID member URL --- doc/addons.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/addons.bb b/doc/addons.bb index 9927a2956..6fa9510f5 100644 --- a/doc/addons.bb +++ b/doc/addons.bb @@ -49,7 +49,7 @@ [*] nsabait - add random terrorism related hashtags to your posts [*] nsfw - Highly recommended plugin to collpase posts with inappropriate content [*] openclipatar - choose a profile photo from hundreds of royalty free images -[*] openid - OpenID authentication and OpenID server +[*] openid - OpenID authentication and OpenID server. Your OpenID URL is [observer.baseurl]/id/[observer.webname] [*] openstreetmap - render locations and maps using OpenStreetMap [*] pageheader - display text at the top of every page on the site [*] phpmailer - alternate mail delivery system with more configurability -- cgit v1.2.3 From e84e2c72585ef0566e44f6e88a87b8be7c1261d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Jim=C3=A9nez=20Friaza?= Date: Sat, 19 Nov 2016 11:32:25 +0100 Subject: Fixed a grammatical concordance error at file connedit in Spanish contextual help --- doc/context/es-es/connedit/help.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/context/es-es/connedit/help.html b/doc/context/es-es/connedit/help.html index 000f28950..e8c92ca28 100644 --- a/doc/context/es-es/connedit/help.html +++ b/doc/context/es-es/connedit/help.html @@ -4,7 +4,7 @@
    Conexiones
    El menú Conexiones le da acceso a varios ajustes: "Ver el perfil", "Ver la actividad reciente", "Recargar los permisos", añadir o quitar estados ("flags") ("Bloquear", "Ignorar", "Archivar", "Ocultar") y eliminar la conexión.
    Grupos de canales
    -
    Todas las conexiones se puede incluir en uno o varios grupos de canales para formar conjuntos de amigos con acceso a publicaciones concretas, ficheros multimedia y otros tipos de contenido. Puede añadirla aquí a un grupo de canales ya existente o crear un grupo nuevo. Cuando añade la conexión a un grupo que ya existe, el efecto es inmediato y no será requerido para confirmarlo.
    +
    Todas las conexiones se pueden incluir en uno o varios grupos de canales para formar conjuntos de amigos con acceso a publicaciones concretas, ficheros multimedia y otros tipos de contenido. Puede añadirla aquí a un grupo de canales ya existente o crear un grupo nuevo. Cuando añade la conexión a un grupo que ya existe, el efecto es inmediato y no será requerido para confirmarlo.
    Permisos individuales
    La concesión de permisos es, generalmente, automática y no requiere ninguna acción por su parte. Sin embargo, puede, si lo desea, ajustar permisos especiales, diferentes de los permisos concedidos a otros, para una conexión concreta.
    Ajustes de funcionalidades concretas
    -- cgit v1.2.3 From 5ba8749a386f9d675aaf7746c322cb3a88d6dda0 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 22 Nov 2016 20:35:29 -0800 Subject: finish removing self --- doc/ca/general.bb | 2 -- doc/de/general.bb | 2 -- doc/general.bb | 2 +- doc/project/governance.bb | 20 ++----------- doc/project/history.md | 74 ----------------------------------------------- doc/project/toc.html | 1 - doc/sv/main.bb | 1 - 7 files changed, 3 insertions(+), 99 deletions(-) delete mode 100644 doc/project/history.md (limited to 'doc') diff --git a/doc/ca/general.bb b/doc/ca/general.bb index dace92775..682b1ff52 100644 --- a/doc/ca/general.bb +++ b/doc/ca/general.bb @@ -2,8 +2,6 @@ [zrl=[baseurl]/help/Privacy]Politica de Privacitat[/zrl] -[zrl=[baseurl]/help/project/history]Història de $Projectname[/zrl] - [h3]Recursos Externs[/h3] [zrl=[baseurl]/help/external-resource-links]Enllaços a Recursos Externs[/zrl] diff --git a/doc/de/general.bb b/doc/de/general.bb index 6660370d7..b9b75f161 100644 --- a/doc/de/general.bb +++ b/doc/de/general.bb @@ -2,8 +2,6 @@ [zrl=[baseurl]/help/Privacy]Informationen zum Datenschutz[/zrl] -[zrl=[baseurl]/help/project/history]Zur Geschichte von $Projectname[/zrl] - [h3]Externe Ressourcen[/h3] [zrl=[baseurl]/help/external-resource-links]Links zu externen Ressourcen[/zrl] diff --git a/doc/general.bb b/doc/general.bb index cc5de5a56..8390aceb3 100644 --- a/doc/general.bb +++ b/doc/general.bb @@ -3,7 +3,7 @@ [zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl] [zrl=[baseurl]/help/project/governance]Project Governance[/zrl] [zrl=[baseurl]/help/contributor/convenant]Project Covenant and Code of Conduct[/zrl] -[zrl=[baseurl]/help/project/history]$Projectname history[/zrl] + [h3]External resources[/h3] [zrl=[baseurl]/help/external-resource-links]List of external resources[/zrl] [url=https://github.com/redmatrix/hubzilla]Main Website[/url] diff --git a/doc/project/governance.bb b/doc/project/governance.bb index e13f6218c..4c1538b4b 100644 --- a/doc/project/governance.bb +++ b/doc/project/governance.bb @@ -2,25 +2,9 @@ Governance relates to the management of a project and particularly how this relates to conflict resolution. -This project uses a dual-governance model. - -The project as a whole and the repository were created initially by Mike Macgirvin; who controls the project copyright, and the project license, and manages the project as a Self Appointed Benevolent Dictator for Life. He holds veto power over any project proposal or decision and his word is final. - -That said, Mike has no interest in running the day to day activities of the project and influencing its direction, other than to protect his own work from sabotage. - -The internal project structure contains multiple "configurations" known as 'basic', 'standard', and 'pro'. Mike's veto power extends to any proposal or decision which he feels might adversely affect the 'pro' configuration. - -The 'basic and 'standard' configurations are controlled completely by the community. If the proposal or decision is crafted in such a way that its effects are limited to these configurations, Mike will consider relinquishing his power of veto and convert it to a normal community vote. - -Mario Vavti has done an incredible amount of work on the usability and theming of the project and holds veto power over any proposal or decision which might impact usability and "look and feel"; and his decision is also final. - -Mario's veto power is likewise restricted to anything using the standard project 'theme'. If a new theme is created and an otherwise vetoed decision is implemented entirely in this different theme and has no impact on the standard project theme, his veto [b]may[/b] also be turned into a normal community vote. - -This ability to work around a veto is at the discretion of Mike and Mario. They [b]may[/b] choose to relinquish their veto if the scope of the work is limited as described above, and in most circumstances they will leave the decision to the community. They are not obligated to do so. - [h3]Community Governance[/h3] -Beyond those two special cases, the project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: +The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: [ol] [*] Lazy Consensus @@ -29,7 +13,7 @@ If a project proposal is made to one of the community governance forums and ther [*] Veto -If a proposal is vetoed, it is not necessarily the final word. See above on how to convert a veto into a normal community vote. This can be done by framing the proposal so that it does not impact the 'pro' configuration or the standard theme. +Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. [*] Community Vote diff --git a/doc/project/history.md b/doc/project/history.md deleted file mode 100644 index 99cbfec7a..000000000 --- a/doc/project/history.md +++ /dev/null @@ -1,74 +0,0 @@ -Hubzilla History -================ - -Hubzilla is a community developed open source project based on work introduced in Friendica by the Friendica community and which previously was named Redmatrix. The core design, the project mission, and software base itself were created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using variations of this platform and an evolving vision of the role of communication software in our lives. Many others have contributed to this work, both conceptually and in terms of actual code (far too many to list individually). - -##Mike Macgirvin -- Biography - -Mike Macgirvin is an American software engineer now living in Australia. He spent his early adult years designing and repairing semiconductor fabrication equipment for a number of companies as a self-described "machine wizard". In 1985 he became a research engineer at Stanford University for the Gravity Probe-B space mission and soon became a Unix systems administrator writing communication software and utilities; and becoming an expert in emerging internet technologies such as the now ubiquitous "World Wide Web". He authored an email "client" called "ML" which pioneered some advanced concepts in encryption, the ability to filter message streams into different "views", and multi-protocol support; and was an active proponent of and participant in the open source software *movement*. In 1996 he went to Netscape Communications to become tech lead on their Messaging Server and integrate this with Collabra (groupware) into a comprehensive communications server package. He stayed on after Netscape was acquired by America Online and was tech manager of the Groups@AOL project until 2001. - -During a layoff round, Mike was let go from America Online in August 2001 and purchased a music store in Mountain View, California later to be known as "Sonica Music Company". Opening a retail store for non-essential goods at the beginning of a prolonged economic downturn was in retrospect probably not the wisest career move. Sonica eventually folded; in late 2006. Mike returned to working on software and systems support full-time and was employed briefly at Symantec before moving to Australia in early 2007. He currently lives on a farm "out in the middle of nowhere" and is employed as a Computer Systems Officer at the University of Wollongong. - - -##Hubzilla - The Early Years - -The software which went into creating Hubzilla has been through several distinct historical phases. It began in 2003 when Mike Macgirvin was looking for a content management system to power the website for his music store and found the available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to each other and not clash (or in this case Mike's personal website and the music store website). This software was developed primarily from 2003 until 2008. - -In 2006 this software was used as the prototype for Symantec's "safeweb" reputation and community site. It was developed and enhanced until about 2008. A rewrite took place in 2008 named "Reflection" but work stagnated as the community dwindled. The need for content management systems and communications software dropped dramatically during this time as humans flocked to the new social aggregrators - Facebook and Twitter. - - -##Mistpark/Friendica - -In early 2010, Mike left Facebook, concerned at the company's increasing hold and control of personal information. In his words "Companies die. We watched it happen in the dot-com years. When they do, their databases are sold to the highest bidder.". Mike used some remnants of the old CMS project to create a decentralised social communications platform. This was launched in July 2010 as "Mistpark". The name was chosen as a tribute to his new home in the Southern Highlands of Australia. The key innovation in this project was the ability to authenticate remotely and invisibly to other decentralised instances of the software so to allow remote viewing of private photos and provide "wall-to-wall" posting across website instances. The lack of simple remote identity *provenance* was a serious limitation of other decentralised communication protocols. - -In late 2010, the name was changed to "Friendika". The name Friendika had some symbolic issues, since the suffix was common with "swastika" and "Amerika", both having negative connotations, however the dot-com domain was available. Friendica was in fact the first choice but the 'friendica.com' domain name was already registered. It became available a year later and the project was renamed to Friendica in late 2011. - -Soon after version 1 was released in July 2010 - providing basic social communications, the software also took on a new role - cross-service federation; which was first introduced in August and September 2010. Federation allowed the software to "behave as" a StatusNet site and friends and messages could communicate to the other service from their own platforms. It was also hoped to provide federation with Diaspora - a project with similar scope being developed in secret in New York and first released in November of that year. Over the course of the next year, the federation ability was extended to provide integrated communications from RSS feeds, to and from email, StatusNet, Facebook, Twitter, and the emerging Diaspora project. The software provided a single "view" of your entire social space no matter what provider you or your friends used. StatusNet and Diaspora were supported natively so that one account could access any of these services. Facebook and Twitter used "API federation" which required the person to have an account on those services with which to link. - -By July 2012, Twitter and Facebook had both changed their terms of service and essentially outlawed "API federation" in the way Friendica was using it. Diaspora announced they were changing their protocol and would not maintain compatibility nor provide any warning when compatibility would break (or documentation on the proposed changes). The creator of StatusNet was also leaving his project to create something new (pump.io). As the software's primary purpose by this time was "federation of different social services into one interface", this created a bit of a crisis. The federated social web was crumbling. Also of concern was that independent and decentralised social websites shut down frequently, requiring all their members to start over again on another site. Often the effort involved to do this seemed daunting - and many people ran back to the relative safety of the large corporate providers - Facebook, Twitter, and now Google+. - -Mike realised he did not want to be held hostage to the decisions that other projects and companies and independent websites make. Friendica could operate on its own without attaching to these other networks, but its vision and implementation of a federated social world depended on federation with others for its project identity - so this created an identity crisis. - -Mike had been working on this project for some time and there were a number of things which needed re-writing, including the base communication protocol which Friendica used (DFRN or the "Distributed Friends and Relations Network" protocol). These ideas were starting to emerge as a different method of communication he called "zot". Zot began as a way to create a common language for federated websites, but there was no interest in this ability and as mentioned, the federated web was crumbling. The first version was soon scrapped and zot was re-designed and re-ignited as a streamlined communication protocol which was location-independent; e.g. not tied to any website. This would allow people to carry on unaffected if their website operator shut down temporarily or permanently. They wouldn't have to make friends all over again, and permissions of everything on the system wouldn't have to be changed to allow bob@site1 to see something that was private to him, even though he was now bob@site2. This was a serious problem with decentralisation. People moved and their online identities were lost and had to be re-created from scratch and existing relationships destroyed and had to be created all over again. - - -##Redmatrix - -In July 2012, Mike left the Friendica project and began development of "zot" and a new base project called "red" in his somewhat elusive *spare time*. Red is Spanish for "network". It wasn't really a "social network" and especially not a "federated social network". It was just Red (technically "la red"), or "the network". Work began by removing all the "federation" components and going back to basics - communication and remote authentication. It was a major re-write and took roughly six months before even basic communication was re-established. It was also no longer compatible with Friendica - which had been given to the "Friendica community" and by this time (December 2012) was developing separately on its own track. - -It became clear during this time that the single most compelling feature of the project wasn't the social network at all, but the authentication layer and decentralised access control mechanisms. Combined with zot's location independence it created a new model for software which had never existed previously - decentralised identity-aware web publishing and single sign-on to any compatible provider across the web. These weren't *evolutionary*, they were **revolutionary**. One of the biggest flaws of the modern web is the reliance on different passwords for every service you use, or reliance on a single provider if you were to tie them to - say your Facebook login. Facebook can remove your account at any time. Gone. If you rely on their authentication for all your websites, your entire online identity - now gone. This is also what was missing from Friendica - a compelling software feature which could stand on its own, without requiring a social network and especially without requiring a federated social network with all the mentioned external dependencies. - -An early visitor to the project noted that he had some difficulty finding the project on Google because of the choice of name - "red". Yes, this was a poor decision in retrospect. We were buried on page 23,712 of the search results. The concept that was emerging around this identity-aware publishing was that of "a matrix of inter-connected thought streams", since we didn't have a concept of "people" and "friends". All were just connected "channels" with different ways to connect. So "Redmatrix" was chosen to give it a searchable name. It had nothing to do with the Matrix film and red and blue pills, though that is frequently cited (erronously); and in fact isn't a bad analogy. - -The concept of identity-aware content was alien to anything that existed previously on the web, so to make it useful we had to provide the ability to use it for content. It needed content publishing tools. This brought back concepts from the old "Content Management System" on which the software was originally based. To get it up and running quickly we created a markup language for webpages called "Comanche" which let you describe a page in high-level terms based on bbcode tags. We also added WebDAV so you could put decentralised access control on files and drag/drop from your operating system. So now you could have private photos, webpages, files, events, conversations, chatrooms - and they are visible to those you choose - no matter what site they use. All they need is zot. And your viewers could move to another site or just pop up at a different site any time they want and we don't care. And it **also** had a built-in social network; with lots of additional privacy and encryption features which were added even before the Snowden revelations gave them added urgency. - -Over time a few federation components re-emerged. The ability to view RSS feeds was important to many people. Diaspora never really managed to re-write their protocol, so that was re-implemented and allowed Redmatrix to connect with Diaspora and Friendica again (Friendica still had their Diaspora protocol intact, so this was the most common language now remaining on the free web - despite its faults). Diaspora communications aren't able to make use of the advanced identity features, but they work for basic communications. - - -##Hubzilla - -The Redmatrix project reached a point of stagnation in early 2015 as network growth leveled and active interest in the project declined. Mike met with several external high tech developers and innovators in a round of discussions that were called "Zotopia" in early 2015 to perform an independent review of the project and try to identify what had gone wrong and plan a route forward. The basic consensus is that the project suffered from bad marketing decisions which were compounded by mixed messages about the project goals and target audience. A "rival" project (Diaspora) was marketing itself as a Facebook competitor, but after some long discussions it was determined that Redmatrix wasn't a Facebook competitor at all, and too much emphasis was being placed on the "social network" and "anti-Facebook" features. It was a novel decentralisation platform with distributed identity and permissions, and as was pointed out, the "end user" was the wrong target market. These marketing mistakes were now identified with the project name and random sampling of various "customers" showed that none of them really had a clue about the software goals or target market segment. The mixed messages were associated with the brand identity and this was a problem. - -The Redmatrix community held a vote and the project was renamed "Hubzilla", with a renewed identity and focus - to provide software for creating and ultimately linking together unrelated community websites or "hubs" into a global community. This is in fact what we were building all along, but didn't fully recognise it. The target audience for this software as it turns out is not the members or end users, but software integrators and digital community architects and builders. These in turn will be responsible for marketing their own product (their respective online communities) to end-users or members. The software solves a real world need of linking isolated and "walled garden" community sites together into a larger cooperative. The transition from Redmatrix to Hubzilla was complex and has taken several months as we consolidated the marketing and media assets to deliver a consistent message. It is still ongoing at this time, and should be completed in Q4 2015. - -Mike stepped down as active coordinator for the project in early 2015 and turned management over to the community. He remains active as a Hubzilla developer. - -##And Then... - -In 2016, the project was re-architected to support multiple server "roles". These correspond to sub-projects which can be isolated from each other in terms of supported feature sets, but all use and support the same code-base and developers are able to work together on common features and goals. The roles primarily differ in target audience, project [governance](help/project/governance) and decision making structures, and this results in slightly different features and idealogy. They all share a common code repository. - -Those roles are: - -### Basic - -Entry level server. Supported by and governed by the Hubzilla community. Most advanced or complex features have been stripped away to ease federation with external services. It is best suited as a FOSS social network tool. - -### Standard - -The standard Hubzilla server. This provides a wide range of useful features and is supported by and governed by the Hubzilla community. It is best suited as an open source community and cloud server. - -### Pro - -This is a specially crafted server with a unique feature set. It is supported by and governed by Mike Macgirvin dba "Zotlabs". Federation with external services has been stripped away in order to support a wide range of more technically advanced and complex features; and also includes features and modes which may not have the support or backing of the Hubzilla open source community. It is best suited for business and workplace applications. - -#include doc/macros/main_footer.bb; diff --git a/doc/project/toc.html b/doc/project/toc.html index b9489de3d..e264e014d 100644 --- a/doc/project/toc.html +++ b/doc/project/toc.html @@ -1,6 +1,5 @@

    Project Information

    diff --git a/doc/sv/main.bb b/doc/sv/main.bb index 27a7a742e..1c6ad3f63 100644 --- a/doc/sv/main.bb +++ b/doc/sv/main.bb @@ -43,7 +43,6 @@ Zot är en fantastisk ny kommunikationsprotokoll uppfunnit speciellt för $Proje [zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl] [h3]Teknisk dokumentation[/h3] -[zrl=[baseurl]/help/project/history]$Projectname history[/zrl] [zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl] [zrl=[baseurl]/help/zot]An introduction to Zot[/zrl] [zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl] -- cgit v1.2.3 From d96ab7c86798c692890ead5c54475fdabb5f83c9 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sat, 26 Nov 2016 20:29:53 -0700 Subject: Update wiki context help. Modify context page element focus feature to do nothing if the target DOM element is not found. --- doc/context/en/profiles/help.html | 35 ++++++++ doc/context/en/settings/account/help.html | 35 ++++++++ doc/context/en/settings/channel/help.html | 35 ++++++++ doc/context/en/settings/tokens/help.html | 23 +++++ doc/context/en/wiki/help.html | 2 +- doc/member/AdvancedSearch.md | 53 ++++++++++++ doc/member/accounts_profiles_channels_basics.bb | 19 +++++ doc/member/addons.bb | 104 +++++++++++++++++++++++ doc/member/bbcode.html | 108 ++++++++++++++++++++++++ doc/member/bugs.bb | 31 +++++++ doc/member/channels.bb | 39 +++++++++ doc/member/checking_account_quota_usage.bb | 20 +++++ doc/member/cloud.bb | 27 ++++++ doc/member/cloud_desktop_clients.bb | 21 +++++ doc/member/connecting_to_channels.bb | 19 +++++ doc/member/diaspora_compat.bb | 68 +++++++++++++++ doc/member/faq_admins.bb | 78 +++++++++++++++++ doc/member/first-post.bb | 3 + doc/member/overview.bb | 26 ++++++ doc/member/permissions.bb | 82 ++++++++++++++++++ doc/member/profiles.bb | 37 ++++++++ doc/member/registration.bb | 35 ++++++++ doc/member/remove_account.bb | 27 ++++++ doc/member/roles.md | 66 +++++++++++++++ doc/member/tags_and_mentions.bb | 69 +++++++++++++++ doc/member/toc.html | 25 ++++++ doc/member/webpages.bb | 93 ++++++++++++++++++++ doc/toc.html | 2 +- 28 files changed, 1180 insertions(+), 2 deletions(-) create mode 100644 doc/context/en/profiles/help.html create mode 100644 doc/context/en/settings/account/help.html create mode 100644 doc/context/en/settings/channel/help.html create mode 100644 doc/context/en/settings/tokens/help.html create mode 100644 doc/member/AdvancedSearch.md create mode 100644 doc/member/accounts_profiles_channels_basics.bb create mode 100644 doc/member/addons.bb create mode 100644 doc/member/bbcode.html create mode 100644 doc/member/bugs.bb create mode 100644 doc/member/channels.bb create mode 100644 doc/member/checking_account_quota_usage.bb create mode 100644 doc/member/cloud.bb create mode 100644 doc/member/cloud_desktop_clients.bb create mode 100644 doc/member/connecting_to_channels.bb create mode 100644 doc/member/diaspora_compat.bb create mode 100644 doc/member/faq_admins.bb create mode 100644 doc/member/first-post.bb create mode 100644 doc/member/overview.bb create mode 100644 doc/member/permissions.bb create mode 100644 doc/member/profiles.bb create mode 100644 doc/member/registration.bb create mode 100644 doc/member/remove_account.bb create mode 100644 doc/member/roles.md create mode 100644 doc/member/tags_and_mentions.bb create mode 100644 doc/member/toc.html create mode 100644 doc/member/webpages.bb (limited to 'doc') diff --git a/doc/context/en/profiles/help.html b/doc/context/en/profiles/help.html new file mode 100644 index 000000000..41f00fe64 --- /dev/null +++ b/doc/context/en/profiles/help.html @@ -0,0 +1,35 @@ +
    +
    General
    +
    + Once you have registered an account at the matrix you have also created a profile and a channel. +
    +
    Account
    +
    + You have one account. This consists of your email account and your password. With your account you access your + profile and your channel.Think of your account as the way you authenticate at one Hubzilla site. It lets you + do things, such as creating profiles and channels with which you can connect to other people. +
    +
    Profile
    +
    + You have surely registered with some other internet services, such as forums or online communities. For all of them + you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other + services Hubzilla offers you the advantage of creating + many more profiles. That way you are able to distinguish between profiles targeted specially at everyone + (your public profile), your work mates, your family and your partner.Think of your profile as the basic + information about yourself you tell other people. +
    +
    Channel
    +
    + During the registration you created your first channel. Yes, besides several profiles you are able to have + several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have + created one channel. You can use this one for the public, to communicate with people about every day life. But + perhaps you are an avid book reader and many people are bored by that. So you open a second channel just + for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of + posts, with a new profile (... or new profiles ...) and completely different contacts. Some connections + might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just + switch between both of them just like you would in real life switch when talking to people you meet on the street + or people you meet specially to talk about books. You can even connect to yourself, or better: to your other + channel. :)Think of a channel as different spaces dedicated to different topics where you meet with different + people. +
    +
    \ No newline at end of file diff --git a/doc/context/en/settings/account/help.html b/doc/context/en/settings/account/help.html new file mode 100644 index 000000000..41f00fe64 --- /dev/null +++ b/doc/context/en/settings/account/help.html @@ -0,0 +1,35 @@ +
    +
    General
    +
    + Once you have registered an account at the matrix you have also created a profile and a channel. +
    +
    Account
    +
    + You have one account. This consists of your email account and your password. With your account you access your + profile and your channel.Think of your account as the way you authenticate at one Hubzilla site. It lets you + do things, such as creating profiles and channels with which you can connect to other people. +
    +
    Profile
    +
    + You have surely registered with some other internet services, such as forums or online communities. For all of them + you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other + services Hubzilla offers you the advantage of creating + many more profiles. That way you are able to distinguish between profiles targeted specially at everyone + (your public profile), your work mates, your family and your partner.Think of your profile as the basic + information about yourself you tell other people. +
    +
    Channel
    +
    + During the registration you created your first channel. Yes, besides several profiles you are able to have + several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have + created one channel. You can use this one for the public, to communicate with people about every day life. But + perhaps you are an avid book reader and many people are bored by that. So you open a second channel just + for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of + posts, with a new profile (... or new profiles ...) and completely different contacts. Some connections + might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just + switch between both of them just like you would in real life switch when talking to people you meet on the street + or people you meet specially to talk about books. You can even connect to yourself, or better: to your other + channel. :)Think of a channel as different spaces dedicated to different topics where you meet with different + people. +
    +
    \ No newline at end of file diff --git a/doc/context/en/settings/channel/help.html b/doc/context/en/settings/channel/help.html new file mode 100644 index 000000000..41f00fe64 --- /dev/null +++ b/doc/context/en/settings/channel/help.html @@ -0,0 +1,35 @@ +
    +
    General
    +
    + Once you have registered an account at the matrix you have also created a profile and a channel. +
    +
    Account
    +
    + You have one account. This consists of your email account and your password. With your account you access your + profile and your channel.Think of your account as the way you authenticate at one Hubzilla site. It lets you + do things, such as creating profiles and channels with which you can connect to other people. +
    +
    Profile
    +
    + You have surely registered with some other internet services, such as forums or online communities. For all of them + you provided some information about yourself, such as date of birth, country, age and the likes. Unlike other + services Hubzilla offers you the advantage of creating + many more profiles. That way you are able to distinguish between profiles targeted specially at everyone + (your public profile), your work mates, your family and your partner.Think of your profile as the basic + information about yourself you tell other people. +
    +
    Channel
    +
    + During the registration you created your first channel. Yes, besides several profiles you are able to have + several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have + created one channel. You can use this one for the public, to communicate with people about every day life. But + perhaps you are an avid book reader and many people are bored by that. So you open a second channel just + for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of + posts, with a new profile (... or new profiles ...) and completely different contacts. Some connections + might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just + switch between both of them just like you would in real life switch when talking to people you meet on the street + or people you meet specially to talk about books. You can even connect to yourself, or better: to your other + channel. :)Think of a channel as different spaces dedicated to different topics where you meet with different + people. +
    +
    \ No newline at end of file diff --git a/doc/context/en/settings/tokens/help.html b/doc/context/en/settings/tokens/help.html new file mode 100644 index 000000000..d37a0fd2b --- /dev/null +++ b/doc/context/en/settings/tokens/help.html @@ -0,0 +1,23 @@ +
    +
    Guest Access Tokens
    +
    + In order to facilitate sharing of private resources with non-members or members of federation nodes with limited identification discovery, Hubzilla should provide members with a mechanism to create and manage temporary ("throwaway") logins, aka "Zot Access Tokens". These tokens/credentials may be used to authenticate to a hubzilla site for the sole purpose of accessing privileged or access controlled resources (files, photos, posts, webpages, chatrooms, etc.). +
    +
    Create a token
    +
    + The form to create/edit accepts three parameters, a human readable name, a password or access token, and an + optional expiration. Once expired, the access token is no longer valid, may no longer be used, and will be + automatically purged from the list of temporary accounts. The password field in the create/edit forms + displays the text of the access token and not an obscured password. +
    +
    Share a token
    +
    + We do not specify mechanisms for sharing these tokens with others. Any communication method may be used. Any tokens you have created are added to the Access Control List selector and may be used anywhere that Access Control Lists are provided. + + Example: A visitor arrives at your site. She has an access token you have provided, and attempts to visit one of your photo albums (which is restricted to be viewed only by yourself and one temporary identity). Permission is denied. + + The visitor now selects "Login" from the menu navigation bar. This presents a login page. She enters the name and password you have provided her, and she can now view the restricted photo album. + + Alternatively, you may share a link to a protected file by adding a parameter "&zat=abc123" to the URL, where the string "abc123" is the access token or password for the temporary login. No further negotiation is required, and the file is presented. +
    +
    \ No newline at end of file diff --git a/doc/context/en/wiki/help.html b/doc/context/en/wiki/help.html index 314a9d60b..a42914c17 100644 --- a/doc/context/en/wiki/help.html +++ b/doc/context/en/wiki/help.html @@ -1,7 +1,7 @@
    General
    Each wiki is a collection of pages, composed as Markdown-formatted text files.
    -
    Wiki List
    +
    Wiki List
    Wikis owned by the channel that you have permission to view are listed in the side panel.
    Page History
    Every revision of a page is saved to allow quick reversion. Click the History tab to view a history of page revisions, including the date and author of each. The revert button will load the selected revision but will not automatically save the page.
    diff --git a/doc/member/AdvancedSearch.md b/doc/member/AdvancedSearch.md new file mode 100644 index 000000000..a67c1fc1f --- /dev/null +++ b/doc/member/AdvancedSearch.md @@ -0,0 +1,53 @@ +Advanced Directory Search +========================= + + +Advanced Directory Search is enabled in "Expert Mode" from your Settings => Additional features page. + +On the Directory page an option named "Advanced" will apear in the "Find Channels" widget (typically in the sidebar). Clicking "Advanced" will open another search box for entering advanced search requests. + +Advanced requests include + +* name=xxx +[Channel name contains xxx] + +* address=xxx +[Channel address (webbie) contains xxx] + +* locale=xxx +[Locale (typically 'city') contains xxx] + +* region=xxx +[Region (state/territory) contains xxx] + +* postcode=xxx +[Postcode or zip code contains xxx] + +* country=xxx +[Country name contains xxx] + +* gender=xxx +[Gender contains xxx] + +* marital=xxx +[Marital status contains xxx] + +* sexual=xxx +[Sexual preference contains xxx] + +* keywords=xxx +[Keywords contain xxx] + +There are many reasons why a match may not return what you're looking for, as many channels do not provide detailed information in their default (public) profile, and many of these fields allow free-text input in several languages - and this may be difficult to match precisely. For instance you may have better results finding somebody in the USA with 'country=u' (along with some odd channels from Deutschland and Bulgaria and Australia) because this could be represented in a profile as US, U.S.A, USA, United States, etc... + +Future revisions of this tool may try to smooth over some of these difficulties. + +Requests may be joined together with 'and', 'or', and 'and not'. + +Terms containing spaces must be quoted. + +Example: + + name="charlie brown" and country=canada and not gender=female + +#include doc/macros/main_footer.bb; diff --git a/doc/member/accounts_profiles_channels_basics.bb b/doc/member/accounts_profiles_channels_basics.bb new file mode 100644 index 000000000..63b13f036 --- /dev/null +++ b/doc/member/accounts_profiles_channels_basics.bb @@ -0,0 +1,19 @@ +[size=large][b]Accounts, Profiles and Channels[/b][/size] + +Once you have registered an [i]account[/i] at the matrix you have also created a [i]profile[/i] and a [i]channel[/i]. + +[b]Account[/b] +You have [i]one[/i] account. This consists of your email account and your password. With your account you access your profile and your channel. +[i]Think of your account as the way you authenticate at one $Projectname site. It lets you do things, such as creating profiles and channels with which you can connect to other people.[/i] + +[b]Profile[/b] +You have surely registered with some other internet services, such as forums or online communities. For all of them you provided some information about yourself, such as date of birth, country, age and the likes. [observer=1]If you like you can see your profile here: [baseurl]/profile/[observer.webname] and edit it by clicking on the pencil icon next to your avatar image. [/observer] +Unlike other services $Projectname offers you the advantage of creating [i]many more profiles[/i]. That way you are able to distinguish between profiles targeted specially at everyone (your public profile), your work mates, your family and your partner. +[i]Think of your profile as the basic information about yourself you tell other people.[/i] + +[b]Channel[/b] +During the registration you created your first [i]channel[/i]. Yes, besides several profiles you are able to have several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have created one channel. You can use this one for the public, to communicate with people about every day life. But perhaps you are an avid book reader and many people are bored by that. So you open a [i]second channel[/i] just for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of posts, with a new profile (... or new profile[i]s[/i] ...) and completely different contacts. Some connections might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just switch between both of them just like you would in real life switch when talking to people you meet on the street or people you meet specially to talk about books. You can even connect to yourself, or better: to your other channel. :) +[i]Think of a channel as different spaces dedicated to different topics where you meet with different people.[/i] + +#include doc/macros/main_footer.bb; + diff --git a/doc/member/addons.bb b/doc/member/addons.bb new file mode 100644 index 000000000..b83b3276a --- /dev/null +++ b/doc/member/addons.bb @@ -0,0 +1,104 @@ +[h3]Plugins/Addons[/h3] +[list=1] +[*] abcjsplugin - Create musical scores in your posts +[*] adultphotoflag - prevents nsfw photos from being displayed in public albums +[*] b2tbtn - provide button to go directly to top of page if you are scrolled a long way down +[*] bbmath - use complex math expressions in your posts +[*] bookmarker - replace #^ with bookmark link in posts +[*] buglink - provide a bug reporting icon in the lower-left corner of every page +[*] calc - a scientific calculator +[*] cdav - CalDAV/CardDAV server +[*] chess - cross domain identity aware interactive chess games +[*] chords - generate fingering charts and alternatives for every known guitar chord +[*] custom_home - set a custom page as the hub start page +[*] dfedfix - fixes some federation issues with Diaspora releases around aug-sep 2015 +[*] diaspora - Diaspora protocol emulator +[*] diaspost - crosspost to a Diaspora account (different from the Diaspora protocol emulator) +[*] dirstats - show some interesting statistics generated by the driectory server +[*] docs - alternate documentation pages +[*] donate - provides a project donation page +[*] dwpost - crosspost to Dreamwidth +[*] embedphotos - tool to embed photos from your albums in a post +[*] extcron - use an external cron service to run your hub's scheduled tasks +[*] flattrwidget - provides a "Flattr Us" button +[*] flip - create upside down text +[*] fortunate - displays random quote (fortune cookie). Requires setting up a fortune server. +[*] friendica - Friendica (DFRN) protocol. Under development. +[*] frphotos - import photo albums from Friendica +[*] gnusoc - GNU-Social (OStatus) protocol. Under development. +[*] hexit - headecimal conversion tool +[*] hubwall - send an admin email to all hub accounts +[*] ijpost - crosspost to Insanejournal +[*] irc - connect to IRC chatrooms +[*] jappixmini - XMPP chat +[*] jsupload - upload multiple photos to photo albums at once. +[*] keepout - prevents nearly all use of site when not logged in, more restrictive than 'block public' setting +[*] ldapauth - login via account on LDAP or Windows Active Directory domain +[*] libertree - crosspost to Libertree +[*] likebanner - create a "like us on red#matrix" banner image +[*] ljpost - crosspost to LiveJournal +[*] logrot - logfile rotation utility +[*] mahjongg - Chinese puzzle game +[*] mailhost - when using multiple channel clones, select one to receive email notifications +[*] metatag - provide SEO friendly pages +[*] mayan_places - set location field to a random city in the Mayan world +[*] morechoice - additional gender/sexual-preference choices for profiles (not safe for work) +[*] moremoods - Additional mood options +[*] morepokes - additional poke options (not safe for work) +[*] msgfooter - provide legal or other text on each outgoing post +[*] noembed - use noembed.com as an addition to Hubzilla's native oembed functionality (currently broken) +[*] nofed - prevent "federation" of channel posts, maintains all interaction on your site +[*] nsabait - add random terrorism related hashtags to your posts +[*] nsfw - Highly recommended plugin to collpase posts with inappropriate content +[*] openclipatar - choose a profile photo from hundreds of royalty free images +[*] openstreetmap - render locations and maps using OpenStreetMap +[*] piwik - open source website analytics +[*] planets - set location field to a random planet from Star Wars +[*] pumpio - crosspost to Pump.io +[*] qrator - generate QR code images +[*] rainbowtag - display your tag and category clouds in colours +[*] randpost - post/reply bot based on and requires fortunate +[*] redfiles - import file storage from redmatrix +[*] redphotos - import photo albums from redmatrix +[*] redred - Crosspost to another Red Matrix or Hubzilla channel +[*] rtof - Crosspost to Friendica +[*] sendzid - add 'zid' auth parmaters to all outbound links, not just in-network links +[*] skeleton - sample addon/plugin to demonstrate plugin development +[*] smiley_pack - extend the built-in smilie (emoticon) support +[*] smileybutton - provides a smiley selector on the post window +[*] startpage - set a personal preferred page to redirect after logging in. +[*] statistics_json - Diaspora statistics generator +[*] statusnet - GNU-social and StatusNet crosspost [zrl=[baseurl]/help/addons_gnusocial]Posting To Gnu Social[/zrl] +[*] std_embeds - allow unfiltered embeds for popular providers like youtube, vimeo and soundcloud +[*] superblock - Highly recommended - completely block an offensive channel from your stream +[*] testdrive - Turns your hub into a test drive site with accounts that expire after a trail period. +[*] tictac - 3D tic-tac-toe +[*] torch - flashlight app +[*] tour - feature tour for new members +[*] twitter - crosspost to Twitter +[*] upload_limits - discover what server setting (there are a few) may be causing large photo uploads to fail +[*] visage - show visitors to your channel +[*] wholikesme - provides a page to display what connections have 'liked' your posts the most +[*] webRTC - use an external server (mayfirst.org) to negotiate webRTC hookups +[*] wppost - crosspost to WordPress (or other wordpress XMLRPC service) +[*] xmpp - XMPP chat based on converse.js +[/list] + +[h3]Addon Repositories[/h3] + +We [b]strongly recommend[/b] that authors of addons publish/submit them to the project addon repository. This has several advantages. Project developers can easily fix security flaws and make changes to comply with recent changes in core code. Addons provided in third-party repositories are considered untrusted. If the project core code changes in an incompatible way, there may be no alternative but to physically remove or rename the addon files in order to get your site working again. Often only the plugin/addon author can help you regain control of your website, and project developers are unable to assist you; because by definition your site configuration has been modified in ways that we cannot easily test or verify. + +For these reasons we [b]strongly recommend[/b] that you do NOT install addons from third-party repositories. + +We also recognise that some developers prefer working on their own and do not wish their code to be mingled with the project repository for a variety of reasons. These developers can ease troubleshooting and debugging by providing a README file in their respective code repository outlining the process for submitting patches and bug fixes. It is also recommended that these projects provide both a 'dev' (development) and 'master' (production) branch which tracks the current project branches of those names. This is because dev and master are often not compatible from the viewpoint of library interfaces. It is also highly recommended that your repository versions are tagged and moved forward within 24 hours of project releases. This is a major inconvenience for everybdy involved, and can present downtime for production sites while this process is being carried out; which is one more reason why we [b]strongly recommend[/b] that addons be submitted to the project addon repository and that you do NOT install such third-party addons. + + +[url=https://github.com/redmatrix/hubzilla-addons]https://github.com/redmatrix/hubzilla-addons[/url] Main project addon repository + +[url=https://github.com/23n/red-addons]https://github.com/23n/red-addons[/url] Oliver's repository (mayan_places and flip) + + + +#include doc/macros/main_footer.bb; + + diff --git a/doc/member/bbcode.html b/doc/member/bbcode.html new file mode 100644 index 000000000..7a2c969eb --- /dev/null +++ b/doc/member/bbcode.html @@ -0,0 +1,108 @@ +

    BBcode reference

    +
    +

    +
      +
    • [b]bold[/b] - bold
      +
    • [i]italic[/i] - italic
      +
    • [u]underlined[/u] - underlined
      +
    • [s]strike[/s] - strike
      +
    • [color=red]red[/color] - red
      +
    • [url=https://zothub.com]$Projectname[/url] $Projectname
      +
    • [img]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] Image/photo
      +
    • [img float=left]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] Image/photo
      +
      +
    • [img float=right]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] Image/photo
      +
      +
    • [code]code[/code] code
      +
    • [code=xxx]syntax highlighted code[/code] supported languages php, css, mysql, sql, abap, diff, html, perl, ruby, vbscript, avrc, dtd, java, xml, cpp, python, javascript, js, json, sh
      +
    • [quote]quote[/quote]
      quote

      +
    • [quote=Author]Author? Me? No, no, no...[/quote]
      Author wrote:
      Author? Me? No, no, no...

      +
    • [nobb] may be used to escape bbcode.

    + +
    You can make lists with:
    +
      +
    • [list]
      +
    • [list=1]
      +
    • [list=i]
      +
    • [list=I]
      +
    • [list=a]
      +
    • [list=A]
      +
    • [ul]
      +
    • [ol]
      +
    • [dl]
      +
    • [dl terms="biumlh"] — where style of the terms can be any combination of: +
      +
      b
      bold
      +
      i
      italic
      +
      u
      underline
      +
      m
      monospace
      +
      l
      large
      +
      h
      horizontal — like this defintion list
      +
      +
    • + +
    For example:
    [ul]
    [*] First list element
    [*] Second list element
    [/ul]

    Will render something like:
    +
      +
    • First list element
      +
    • Second list element
    + +or

    [dl terms="b"]
    [*= First element term] First element description
    [*= Second element term] Second element description
    [/dl]

    Will render something like:

    +
    +
    First element term
    First element description
    +
    Second element term
    Second element description
    +

    + + +
    There's also:
    +
      +
    • [hr]
      +
    • [video]video URL[/video]
      +
    • [audio]audio URL[/audio]
      +
    • [table]
      +
    • [th]
      +
    • [td]
      +
    • [tr]
      +
    • [center]
      +
    • [font=courier]some text[/font] some text
      +

    +
    Tables? Yes!

    [table border=1]
    [tr]
    [th]Tables now[/th]
    [/tr]
    [tr]
    [td]Have headers[/td]
    [/tr]
    [/table]

    Tables now
    Have headers

    All sizes,
    From the [size=xx-small] - xx-small.
    To the [size=xx-large] - xx-large.
    To fit exactly 20px use [size=20].

    + +

    $Projectname specific codes

    +
      +
    • [©] © This works for many HTML entities
    • +
    • [zrl]https://zothub.com[/zrl] Magic-auth version of [url] tag
    • +
    • [zmg]https://zothub.com/some/photo.jpg[/zmg] Magic-auth version of [img] tag
    • + +
    • [observer=1]Text to display if observer is authenticated in the matrix[/observer]
    • +
    • [observer=0]Text to display if observer is not authenticated in the matrix[/observer]
    • +
    • [observer.baseurl] website of observer
    • +
    • [observer.url] channel URL of observer
    • +
    • [observer.name] name of observer
    • +
    • [observer.address] address (zot-id) of observer
    • +
    • [observer.photo] profile photo of observer
    • + +
    • [spoiler] for hiding spoilers

    • + +
    • [rpost=title]Text to post[/rpost] The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional
    • +
    • [qr]text to post[/qr] - create a QR code (if the qrator plugin is installed).
    • +
    • [toc] - create a table of content in a webpage. Please refer to the original jquery toc to get more explanations. +
        +
      • Optional param: 'data-toc'. If ommited the default is 'body'
      • +
      • Optional param: 'data-toc-headings'. If ommited the default is 'h1,h2,h3'
      • +
      • Full example: [toc data-toc='div.page-body' data-toc-headings='h1,h2']
      • +
      +
    • +
    +
    +

    These require a suitable map plugin/addon such as openstreetmap or else the result will be blank

    +
      +
    • [map] Generate an inline map using the current browser coordinates of the poster, if browser location is enabled
      +
    • [map=latitude,longitude] Generate a map using global coordinates.
      +
    • [map]Place Name[/map] Generate a map for a given named location. The first matching location is returned. For instance "Sydney" will usually return Sydney, Australia and not Sydney, Nova Scotia, Canada unless the more precise location is specified. It is highly recommended to use the post preview utility to ensure you have the correct location before submitting the post.
      +
    + +#include doc/macros/main_footer.bb; +
    + + + diff --git a/doc/member/bugs.bb b/doc/member/bugs.bb new file mode 100644 index 000000000..f50337648 --- /dev/null +++ b/doc/member/bugs.bb @@ -0,0 +1,31 @@ +[h2]Bugs, Issues, and things that go bump in the night...[/h2] +[h3]Something went wrong! Who is charge of fixing it?[/h3] + +[b]Hubzilla Community Server[/b] + +Hubzilla Community Server is open source software which is maintained by "the community" - essentially unpaid volunteers. + +The first thing you need to do is talk to your hub administrator - the person who runs and manages your site. They are in the unique position of having access to the internal software and database and [b]logfiles[/b] and will need to be involved in fixing your problem. Other people "on the net" can't really help with this. The first thing the hub administrator needs to do is look at their logs and/or try to reproduce the problem. So try to be as helpful and courteous as possible in helping them look into the problem. + +To find your hub administrator (if you don't know who they are) please look at [url=[baseurl]/siteinfo]this page[/url]. If they have not provided any contact info on that page or provided an "Impressum" there, see [url=[baseurl]/siteinfo/json]this site info summary[/url] under the heading "admin:". + +[h3]I'm a hub administrator; what do I do?[/h3] + +The software instructions which provide this server are open source and are available for your inspection. If an error message was reported, often one can do a search on the source files for that error message and find out what triggered it. With this information and the site logfiles it may be possible to figure out the sequence of events leading to the error. There could also be other sites involved, and the problem may not even be on your site but elsewhere in the network. Try to pin down the communication endpoints (hubs or sites) involved in the problem and contact the administrator of that site or those sites. Please try and provide an event time of when things went wrong so it can be found in the logs. Work with the other administrator(s) to try and find the cause of the problem. Logfiles are your friend. When something happens in the software that we didn't expect, it is nearly always logged. + +[h3]The white screen of death[/h3] + +If you get a blank white screen when doing something, this is almost always a code or syntax error. There are instructions in your .htconfig.php file for enabling syntax logging. We recommend all sites use this. With syntax logging enabled repeat the sequence which led to the error and it should log the offending line of code. Hopefully you will be able to fix the problem with this information. When you do, please submit the fix "upstream" so that we can share the fix with the rest of the project members and other communities. This is a key benefit of using open source software - we share with each other and everybody benefits. + +[h3]I'm stumped. I can't figure out what is wrong.[/h3] + +At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. As a last resort, try "Channel One", which is in English. + +If the community developers can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues +. Create an issue here and provide all the same information that you provided online. Don't leave out anything. + +Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works. + + +Other developers working to fix the problem may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said. Tell us what version you're running and any other details that may be unique about your site configuration. + \ No newline at end of file diff --git a/doc/member/channels.bb b/doc/member/channels.bb new file mode 100644 index 000000000..eca8dd0e6 --- /dev/null +++ b/doc/member/channels.bb @@ -0,0 +1,39 @@ +[h2]Channels[/h2] + +[h3]What are channels?[/h3] + +Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me". + +The most important features for a channel that represents "me" are: +[ul] +[*]Secure and private "spam free" communications + +[*]Identity and "single-signon" across the entire network + +[*]Privacy controls and permissions which extend to the entire network + +[*]Directory services (like a phone book) +[/ul] +In short, a channel that represents yourself is "me, on the internet". + +[h3]Creating channels[/h3] + +You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link. + +You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice. + +Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions. + +Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0]example.com/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts. + +[h3]The grid, permissions and delegation[/h3] + +The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts. + +As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl]. + +You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources. + +#include doc/macros/main_footer.bb; + + diff --git a/doc/member/checking_account_quota_usage.bb b/doc/member/checking_account_quota_usage.bb new file mode 100644 index 000000000..ca7e070ad --- /dev/null +++ b/doc/member/checking_account_quota_usage.bb @@ -0,0 +1,20 @@ +[b]Checking your account quota usage (service limits usage)[/b] + +Your hub might implement service class limits, assigning limits to the total size of file, photo, channels, top-level posts, etc., that can be created by an account holder for a specific service level. + +Here's how you can quickly check how much of your assigned quota you're currently using: + +[b]Check file storage quota levels[/b] +Visit the following URL in your browser: +[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer] +[observer=0]example.com/filestorage/username[/observer] + +[b]Check uploaded photos storage quota levels[/b] +[observer=1][observer.baseurl]/photos/[observer.webname][/observer] +[observer=0]example.com/photos/username[/observer] + +Example: +[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer] +[observer=0]example.com/filestorage/username[/observer] + +#include doc/macros/main_footer.bb; diff --git a/doc/member/cloud.bb b/doc/member/cloud.bb new file mode 100644 index 000000000..2ad22806b --- /dev/null +++ b/doc/member/cloud.bb @@ -0,0 +1,27 @@ +[b]Personal Cloud Storage[/b] + +$Projectname provides an ability to store privately and/or share arbitrary files with friends. + +You may either upload files from your computer into your storage area, or copy them directly from the operating system using the WebDAV protocol. + +On many public servers there may be limits on disk usage. + +[b]File Attachments[/b] + +The quickest and easiest way to share files is through file attachments. In the row of icons below the status post editor is a tool to upload attachments. Click the tool, select a file and submit. After the file is uploaded, you will see an attachment code placed inside the text region. Do not edit this line or it may break the ability for your friends to see the attachment. You can use the post permissions dialogue box or privacy hashtags to restrict the visibility of the file - which will be set to match the permissions of the post your are sending. + +To delete attachments or change the permissions on the stored files, visit [observer.baseurl]/cloud/{{username}}" replacing {{username}} with the nickname you provided during channel creation. + +[b]Web Access[/b] + +Your files are visible on the web at the location "cloud/{{username}}" to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. + +[b]WebDAV access[/b] + +See: [zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl] + +[b]Permissions[/b] + +When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit "filestorage/{{username}}"; select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/cloud_desktop_clients.bb b/doc/member/cloud_desktop_clients.bb new file mode 100644 index 000000000..2f099527f --- /dev/null +++ b/doc/member/cloud_desktop_clients.bb @@ -0,0 +1,21 @@ +[b]Cloud Desktop Clients[/b] + +[b]Windows Clients[/b] + +[li][zrl=[baseurl]/help/dav_windows]Windows Internal Client[/zrl][/li] + + +[b]Linux Clients[/b] + +[li][zrl=[baseurl]/help/dav_mount]Command Line as a Filesystem[/zrl][/li] +[li][zrl=[baseurl]/help/dav_dolphin]Dolphin[/zrl][/li] +[li][zrl=[baseurl]/help/dav_konqueror]Konqueror[/zrl][/li] +[li][zrl=[baseurl]/help/dav_nautilus]Nautilus[/zrl][/li] +[li][zrl=[baseurl]/help/dav_nemo]Nemo[/zrl][/li] + + +[b]Server Notes[/b] + +Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. + +#include doc/macros/cloud_footer.bb; diff --git a/doc/member/connecting_to_channels.bb b/doc/member/connecting_to_channels.bb new file mode 100644 index 000000000..291323f75 --- /dev/null +++ b/doc/member/connecting_to_channels.bb @@ -0,0 +1,19 @@ +[b]Connecting To Channels[/b] + +Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it? + +First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels. + +The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later. + +To connect with other $Projectname channels: + +Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit". + +You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. + +[b]Premium Channels[/b] + +Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/diaspora_compat.bb b/doc/member/diaspora_compat.bb new file mode 100644 index 000000000..f27a63b9d --- /dev/null +++ b/doc/member/diaspora_compat.bb @@ -0,0 +1,68 @@ +[h3]Diaspora Compatibility[/h3] + +The Diaspora Protocol addon allows a site to communicate using the Diaspora protocol, which allows communications and connections to be made with Diaspora members (and also Friendica members, since that network also provides the Diaspora Protocol). + +This addon is available in the 'basic' and 'standard' server configurations. It is not available with and the plugin is disabled completely when you are using the 'pro' server configuration. The reason for this is that the Diaspora protocol is not very sophisticated and many $projectname features do not work well with it. + +Members will have to be aware of limitations of the protocol or limit their own activities to those which are compatible with Diaspora. The 'pro' server configuration is free from these limitations and you may use all of the project features and abilities without regard for how they translate to other networks. Many features are unique to $Projectname and are supported by the "Zot" protocol, which is our native communications language between servers/hubs. + +If you are using a configuration which allows direct Diaspora communications you should be aware of the limitations presented here. + +[ul] +[*]Private mail retraction (unsend) is not possible for Diaspora connections. + +[*]Private posts and their associated comments are sent in plaintext email notifications in Diaspora and Friendica. This is a major privacy issue and affects any private communications you have where *any* member of the conversation is on another network. Be aware of it. + +[*]Access control only works on posts and comments. Diaspora members will get permission denied trying to access any other access controlled hubzilla objects such as files, photos, webpages, chatrooms, etc. In the case of private photos that are linked to posts, they will see a "prohibited sign" instead of the photo. Diaspora has no concept of private media and provides an illusion of photo privacy by using obscured URLs rather than protecting the photo from snooping by unauthorised viewers. + +There is no workaround except to make your media resources public (to everybody on the internet). + + +[*]Edited posts will not be delivered. Diaspora members will see the original post/comment without edits. There is no mechanism in the protocol to update an existing post. We cannot delete it and submit another invisibly because the message-id will change and we need to keep the same message-id on our own network. The only workaround is to delete the post/comment and do it over. (If this is a post, this will delete any existing likes/comments). We may eventually provide a way to delete the out of date copy only from Diaspora and keep it intact on networks that can handle edits. + +[*]Nomadic identity ($projectname 'standard' only) will not work with Diaspora. We may eventually provide an **option** which will allow you to "start sharing" from all of your clones when you make the first connection. The Diaspora person does not have to accept this, but it will allow your communications to continue if they accept this connection. Without this option, if you go to another server from where you made the connection originally or you make the connection before creating the clone, you will need to connect with them again from the new location. + +[*]Post expiration is not supported on Diaspora. We may provide you an option to not send expiring posts to that network. In the future this may be provided with a remote delete request. + +[*]End-to-end encryption is not supported. We will translate these posts into a lock icon, which can never be unlocked from the Diaspora side. + +[*]Message verification will eventually be supported. + +[*]Multiple profiles are not supported. Diaspora members can only see your default profile. + +[*]Birthday events will not appear in Diaspora. Other events will be translated and sent as a post, but all times will either be in the origination channel's timezone or in GMT. We do not know the recipient's timezone because Diaspora doesn't have this concept. + +[*]We currently allow tags to be hijacked by default. An option is provided to allow you to prevent the other end of the network from hijacking your tags and point them at its own resources. + +[*]Community tags will not work. We will send a tagging activity as a comment. It won't do anything. + +[*]Privacy tags (@!somebody) will not be available to Diaspora members. These tags may have to be stripped or obscured to prevent them from being hijacked - which could result in privacy issues. + +[*]Plus-tagged hubzilla forums should work from Diaspora. + + +[*]You cannot use Diaspora channels as channel sources. + + +[*]Dislikes of posts will be converted to comments and you will have the option to send these as comments or not send them to Diaspora (which does not provide dislike). Currently they are not sent. + +[*]We will do the same for both likes and dislikes of [b][i]comments[/i][/b]. They can either be sent as comments or you will have the ability to prevent them from being transmitted to Diaspora. Currently they are not sent. + +[*]Emojis are currently untranslated. + +[*]"observer tags" will be converted to empty text. + + +[*]Embedded apps will be translated into links. + + +[*]Embedded page design elements (work in progress) will be either stripped or converted to an error message. + +[*]Diaspora members will not appear in the directory. + + +[*]There are differences in oembed compatibility between the networks. Some embedded resources will turn into a link on one side or the other. + +[/ul] + +#include doc/macros/main_footer.bb; diff --git a/doc/member/faq_admins.bb b/doc/member/faq_admins.bb new file mode 100644 index 000000000..0b54a41de --- /dev/null +++ b/doc/member/faq_admins.bb @@ -0,0 +1,78 @@ +[size=large][b]$Projectname FAQ[/b][/size] + +[toc] + +[h3]Is there a way to change the Admin account?[/h3] +[h3]Is there a way to have multiple administrators?[/h3] +Yes, but it's a bit messy at the moment as it is not yet exposed in the UI. To make an account an administrative account, +one needs to add 4096 to the account_roles entry in the account table of the database. Likewise, to remove administrative permissions, +one must subtract 4096 from the account roles. + +[h3]I can log in, but there are no posts or webpages[/h3] + +Most likely, your item table has crashed. Run the MySQL command [code]repair table item;[/code] + +[h3]Login doesn't work, immediately after login, the page reloads and I'm logged out[/h3] + +Most likely, your session table has crashed. Run the MySQL command [code]repair table session;[/code] + +[h3]When I switch theme, I sometimes get elements of one theme superimposed on top of the other[/h3] + +a) store/[data]/smarty3 isn't writeable by the webserver. Make it so. + +b) You're using Midori, or with certain themes, Konqueror in KHTML mode. + +[b]My network tab won't load, it appears to be caused by a photo or video[/h3] + +Your PHP memory limit is too low. Increase the size of the memory_limit directive in your php.ini + +Contrary to popular belief, the number of users on a hub doesn't make any difference to the required memory limit, rather, the content +of an individuals matrix counts. Streams with lots of photos and video require more memory than streams with lots of text. + +[h3]I have no communication with anybody[/h3] + +You're listening on port 443, but do not have a valid SSL certificate. Note this applies even if your baseurl is http. +Don't listen on port 443 if you cannot use it. It is strongly recommended to solve this problem by installing a browser +valid SSL certificate rather than disabling port 443. + +[h3]How do I update a non-Git install?[/h3] +1) Backup .htconfig.php +2) Backup everything in store/ +3) Backup any custom changes in mod/site/ and view/site +3) Delete your existing installation +4) Upload the new version. +5) Upload the new version of themes and addons. +6) Restore everything backed up earlier. + +[h3]What do I need to do when moving my hub to a different server[/h3] + +1) Git clone on the new server. Repeat the process for any custom themes, and addons. +2) Rsync .htconfig.php +3) Rsync everything in store/ +4) Rsync everything in mod/site/ and view/site (these will only exist if you have custom modules) +5) Dump and restore DB. + +[h3]How do I reinstall an existing hub on the same server?[/h3] + +1) [code]git reset --hard HEAD[/code] will reset all files to their upstream defaults. This will not reset any local files that do not also exist upstream. Eg, if you have local changes to mod/channel.php, this will reset them - but will not reset any changes in mod/site/channel.php +2) If you absolutely must reinstall - for example, if you need to upgrade operating system - follow the steps for moving to a different server, but instead of using rsync, backup and restore some other way. + +Do not reinstall a hub with a fresh database and fresh .htconfig.php unless as a very last resort. Creating a temporary account and ask for help via a support channel for non-trivial reinstalls is preferable to reinstalling fresh. + +[h3]How do I set the default homepage for logged out viewers?[/h3] + +Use the custom_home addon available in the main addons repository. + +[h3]What do the different directory mode settings mean?[/h3] +[code]// Configure how we communicate with directory servers. +// DIRECTORY_MODE_NORMAL = directory client, we will find a directory (all of your member's queries will be directed elsewhere) +// DIRECTORY_MODE_SECONDARY = caching directory or mirror (keeps in sync with realm primary [adds significant cron execution time]) +// DIRECTORY_MODE_PRIMARY = main directory server (you do not want this unless you are operating your own realm. one per realm.) +// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services (only local site members in directory) +[/code] +- The default is NORMAL. This off-loads most directory services to a different server. The server used is the config:system/directory_server. This setting MAY be updated by the code to one of the project secondaries if the current server is unreachable. You should either be in control of this other server, or should trust it to use this setting. +- SECONDARY. This allows your local site to act as a directory server without exposing your member's queries to another server. It requires extra processing time during the cron polling, and is not recommended to be run on a shared web host. +- PRIMARY. This allows you to run a completely separate 'Network' of directory servers with your own Realm. By default, all servers are on the RED_GLOBAL realm unless the config:system/directory_realm setting is overridden. [i]Do not use this unless you have your own directory_realm.[/i] +- STANDALONE. This is like primary, except it's a 'Network' all on it's own without talking to any other servers. Use this if you have only one server and want to be segregated from the Red#Matrix directory listings. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/first-post.bb b/doc/member/first-post.bb new file mode 100644 index 000000000..cf6ed5b49 --- /dev/null +++ b/doc/member/first-post.bb @@ -0,0 +1,3 @@ +[size=large]Your first posting[/size] + +... to be written ... diff --git a/doc/member/overview.bb b/doc/member/overview.bb new file mode 100644 index 000000000..0dc71aa96 --- /dev/null +++ b/doc/member/overview.bb @@ -0,0 +1,26 @@ +[h2]Documentation for hub members[/h2] +While many features and capabilities of Hubzilla are familiar to people who have used social networking sites and blogging software, there are also quite a few new concepts and features that most people have not encountered before. Some of the new ideas are related to the [b]decentralized[/b] nature of the grid; others are associated with the advanced [b]permissions system[/b] that is necessary to protect your data privacy. The purpose of this guide is to help you understand how to create, configure, and use your nomadic identity. +[h3]Getting started[/h3] +[zrl=[baseurl]/help/registration]Account Registration[/zrl] +[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at $Projectname: accounts, profiles and channels in short[/zrl] +[zrl=[baseurl]/help/profiles]Profiles[/zrl] +[zrl=[baseurl]/help/channels]Channels[/zrl] +[zrl=[baseurl]/help/roles]Permission roles and Channel types[/zrl] +[zrl=[baseurl]/help/first-post]Your first posting[/zrl] +[zrl=[baseurl]/help/connecting_to_channels]Connecting To Other Channels[/zrl] +[zrl=[baseurl]/help/permissions]Permissions And Encryption: You Are In Control[/zrl] +[zrl=[baseurl]/help/cloud]Cloud Storage[/zrl] +[zrl=[baseurl]/help/remove_account]Remove Channel or Account[/zrl] +[h3]Members help[/h3] +[zrl=[baseurl]/help/tags_and_mentions]Tags and Mentions[/zrl] +[zrl=[baseurl]/help/webpages]Web Pages[/zrl] +[zrl=[baseurl]/help/bbcode]BBcode reference for posts and comments[/zrl] +[zrl=[baseurl]/help/checking_account_quota_usage]Checking Account Quota Usage[/zrl] +[zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl] +[zrl=[baseurl]/help/AdvancedSearch]Advanced Directory Search[/zrl] +[zrl=[baseurl]/help/addons]Help With Addons[/zrl] +[zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl] +[zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl] +[zrl=[baseurl]/help/bugs]Bugs, Issues, and things that go bump in the night...[/zrl] + +#include doc/macros/main_footer.bb; diff --git a/doc/member/permissions.bb b/doc/member/permissions.bb new file mode 100644 index 000000000..0721c763d --- /dev/null +++ b/doc/member/permissions.bb @@ -0,0 +1,82 @@ +[h1]Permissions[/h1] +Permissions in $Projectname are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere. + +[b]Permission Roles[/b] + +When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire. + + +[b]Default Permission Limits[/b] + +There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends. + +[b]Access Control[/b] + +Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish. + +We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around. + + +[dl terms="l"] +[*= The scopes of permissions are:] +[dl terms="i"] + [*= Nobody Except Yourself ] This is self explanatory. Only you will be allowed access. + + [*= Only those you specifically allow ] By default, people you are not connected to, and all new contacts will have this permission denied. You will be able to make exceptions for individual channels on their contact edit screen. + + [*= Anybody in your address book ] Anybody you do not know will have this permission denied, but anybody you accept as a contact will have this permission approved. This is the way most legacy platforms handle permissions. + + [*= Anybody On This Hub ] Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied. + + [*= Anybody in this network ] Anybody in $Projectname will have this permission approved. Even complete strangers. However, anybody not logged in/authenticated will have this permission denied. + + [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks. + + [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all. +[/dl] +[*= The individual permissions are:] +[dl terms="i"] + [*= Can view my "public" stream and posts. ] This permision determines who can view your channel "stream" that is, the non-private posts that appear on the "home" tab when you're logged in. + + [*= Can view my "public" channel profile. ] This permission determines who can view your channel's profile. This refers to the "about" tab + + [*= Can view my "public" photo albums. ] This permission determines who can view your photo albums. Individual photographs may still be posted to a more private audience. + + [*= Can view my "public" address book. ] This permission determines who can view your contacts. These are the connections displayed in the "View connections" section. + + [*= Can view my "public" file storage. ] This permission determines who can view your public files stored in your cloud. + + [*= Can view my "public" pages. ] This permission determines who can view your public web pages. + + [*= Can send me their channel stream and posts. ] This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery. + + [*= Can post on my channel page ("wall"). ] This permission determines who can write to your wall when clicking through to your channel. + + [*= Can comment on my posts. ] This permission determines who can comment on posts you create. Normally, you would want this to match your "can view my public stream and posts" permission + + [*= Can send me private mail messages. ] This determines who can send you private messages (zotmail). + + [*= Can post photos to my photo albums. ] This determines who can post photographs in your albums. This is very useful for forum-like channels where connections may not be connected to each other. + + [*= Can forward to all my channel contacts via post tags. ] Using @- mentions will reproduce a copy of your post on the profile specified, as though you posted on the channel wall. This determines if people can post to your channel in this way. + + [*= Can chat with me (when available). ] This determines who can join the public chat rooms created by your channel. + + [*= Can write to my "public" file storage. ] This determines who can upload files to your public file storage, or 'cloud'. + + [*= Can edit my "public" pages. ] This determines who can edit your webpages. This is useful for wikis or sites with multiple editors. + + [*= Can administer my channel resources. ] This determines who can have full control of your channel. This should normally be set to "nobody except myself". +[/dl][/dl] +[i]Note:[/i] +Plugins/addons may provide special permission settings, so you may be offered additional permission settings beyond what is described here. + +If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen. + +[b]Affinity[/b] + +The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number. + +The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/profiles.bb b/doc/member/profiles.bb new file mode 100644 index 000000000..513bf5fed --- /dev/null +++ b/doc/member/profiles.bb @@ -0,0 +1,37 @@ +[b]Profiles[/b] + +$Projectname has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences. This is different to having different channels. Different channels allow for completely different sets of information. You may have a channel for yourself, a channel for your sports team, a channel for your website, or whatever else. A profile allows for finely graded "sides" of each channel. For example, your default public profile might say "Hello, I'm Fred, and I like laughing". You may show your close friends a profile that adds "and I also enjoy dwarf tossing". + +You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile. + +That said, if you want other friends to be able to find you, it helps to have the following information in your public profile... + +[ul][*]Your real name or at least a nickname everybody knows +[*]A photo of you +[*]Your location on the planet, at least to a country level.[/ul] + +In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like. + +To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Settings > Additional Features[/zrl] and enable "Multiple Profiles" there, otherwise you won't have the ability to use more than just your default profile. + +Then select "Edit Profiles" from the menu of your $Projectname site. You may edit an existing profile, change the profile photo, add things to a profile or create a new profile. You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again. To do that, click on the profile you want to clone and choose "Clone this profile" there. + +In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" next to the profile in question (only available for the profiles that are not your default profile) and then click on user images to add them to or remove them from the group of people who can see this profile. + +Once a profile has been selected, when the person views your profile, they will see the private profile you have assigned. If they are not authenticated, they will see your public profile. + +There is a setting which allows you to publish your profile to a directory and ensure that it can be found by others. You can change this setting on the "Settings" page. + +If you do not wish to be found be people unless you give them your channel address, you may leave your profile unpublished. + +[b]Keywords and Directory Search[/b] + +On the directory page, you may search for people with published profiles. Currently, only the name field and the keywords are searched. You may also include such keywords in your default profile - which may be used to search for common interests with other members. Keywords are used in the channel suggestion tool and although they aren't visible in the directory, they are shown if people visit your profile page. + +On your Connnections page and in the directory there is a link to "Suggestions" or "Channel Suggestions", respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance. + +See Also + +[zrl=[baseurl]/help/AdvancedSearch]Advanced Searching[/zrl] + +#include doc/macros/main_footer.bb; diff --git a/doc/member/registration.bb b/doc/member/registration.bb new file mode 100644 index 000000000..f656eeaa6 --- /dev/null +++ b/doc/member/registration.bb @@ -0,0 +1,35 @@ +[size=large][b]Registration[/b][/size] + +Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides. + +[b]Your Email Address[/b] + +Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [i]and to recover lost passwords[/i]. + +[b]Password[/b] + +Enter a password of your choice, and repeat it in the second box to ensure it was typed correctly. As $Projectname offers a decentralised identity, your account can log you in to many other websites. + +[b]Terms Of Service[/b] + +Click the link to read the site's [zrl=[baseurl]/help/TermsOfService]Terms of Service[/zrl]. Once you've read them, tick the box in the register form to confirm. + +[b]Register[/b] + +Once you have provided the necessary details, click the 'Register' button. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval. + +[b]Create a Channel[/b] + +Next, you will be presented with the "Add a channel" screen. Normally, your first channel will be one that represents you - so using your own name (or psuedonym) as the channel name is a good idea. The channel name should be thought of as a title, or brief description of your channel. The "choose a short nickname" box is similar to a "username" field. We will use whatever you enter here to create a channel address, which other people will use to connect to you, and you will use to log in to other sites. This looks like an email address, and takes the form nickname@siteyouregisteredat.xyz + +When your channel is created you will be taken straight to your settings page where you can define permissions, enable features, etc. All these things are covered in the appropriate section of the helpfiles. + +See Also +[zrl=[baseurl]/help/accounts_profiles_channels_basics]The Basics about Identities within $Projectname[/zrl] +[zrl=[baseurl]/help/accounts]Accounts[/zrl] +[zrl=[baseurl]/help/profiles]Profiles[/zrl] +[zrl=[baseurl]/help/permissions]Permissions[/zrl] +[zrl=[baseurl]/help/remove_account]Remove Account[/zrl] + +#include doc/macros/main_footer.bb; + diff --git a/doc/member/remove_account.bb b/doc/member/remove_account.bb new file mode 100644 index 000000000..704f0b94c --- /dev/null +++ b/doc/member/remove_account.bb @@ -0,0 +1,27 @@ +[b]Remove Channel or Account[/b] + +[b]Remove Channel[/b] + +Go to the bottom of your channel settings page or visit the URL: + + [baseurl]/removeme + +You will need to confirm your password and the channel you are currently logged into will be removed. + +This is irreversible. + +If you have identity clones on other hubs this only removes by default the channel instance which exists on this hub. + +[b]Remove Account[/b] + +Go to the bottom of your account settings page or visit the URL: + + [baseurl]/removeaccount + +You will need to confirm your password and the account you are currently logged into will be removed. + +This is irreversible. + +All your channels will be deleted. If you have identity clones on other hubs this only removes by default the channels instances which exists on this hub. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/roles.md b/doc/member/roles.md new file mode 100644 index 000000000..a7608ff90 --- /dev/null +++ b/doc/member/roles.md @@ -0,0 +1,66 @@ +Account Permission Roles +======================== + + +##Social + +**Mostly Public** + +The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. + + +**Restricted** + +By default all posts and published items are sent to your 'Friends' privacy group and not made public. New friends are added to this privacy group. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers. + +**Private** + +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. + + +##Forum + +**Mostly Public** + +The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically. + + +**Restricted** + +By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. + +**Private** + +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. + + +##Feed + + +**Public** + +Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. + + +**Restricted** + +Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. + + +##Special + +**Celebrity/Soapbox** + +Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. + + +**Group Repository** + +A public forum which allows members to post files/photos/webpages. + + +##Custom/Expert Mode + +Set all the privacy and permissions manually to suit your specific needs. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/tags_and_mentions.bb b/doc/member/tags_and_mentions.bb new file mode 100644 index 000000000..29dfe0fbe --- /dev/null +++ b/doc/member/tags_and_mentions.bb @@ -0,0 +1,69 @@ +[b]Tags And Mentions[/b] + +Like many other platforms, Red uses a special notation inside messages to indicate "tags" or contextual links to other entities. + +[b]Mentions[/b] + +Channels are tagged by simply preceding their name with the @ character. + +[code] +@Jack +[/code] + +When you start to mention somebody, it will create an auto-complete box to select from your immediate connections. Select one as appropriate. + +If the person mentioned is in the list of recipients for the post, they will receive a tag notification. + + +[b]Deliverable Mentions[/b] + +Some connections in the mention auto-complete box behave differently than others. If you mention a channel which provides "re-delivery of mentions" it will also send the post to all of that channel's default delivery connections. This is how one posts to "forums". The auto-complete box will provide two entries for these channels, one will mention just the channel. The other will invoke re-delivery and be listed as the channel's "network". + +[code] +@Gardening - mention the Gardening forum +[/code] + +[code] +@Gardening+ - mention the Gardening Forum and also post to the Gardening "network" (e.g. all the forum members; if you have permission to do so) +[/code] + + + +[b]Private Mentions[/b] + +If you wish to restrict a post to a single person or a number of people, you can do this by selecting channels or privacy groups from the privacy tool. You can also just tag them with a privacy tag. A privacy tag is a name preceded by the two characters @! - and in addition to tagging these channels, will also change the privacy permissions of the post to only include them. You can have more than one privacy tag, for instance @!bob and @!linda will send the post only to Bob and Linda. This mechanism over-rides the privacy selector. + +You may also tag privacy groups which are "public". When you create or edit a privacy group, there is a checkbox to allow the group members to be seen by others. If this box is checked for a group and you tag (for instance) @!Friends - the post will be restricted to the Friends group. Check that the group is public before doing this - as there is no way to take back a post except to delete it. The group name will appear in the post and will alert members of that group that they are members of it. + + +[b]Mentions and Comments[/b] + +The above mechanisms only apply to "top-level" posts you create. Mentioning a channel with any of the above mechanisms has no effect in comments, except that the mentioned channel may receive a notification if they were already included as a recipient in the conversation. + + + + +[b]Topical Tags[/b] + +Topical tags are indicated by preceding the tag name with the # character. This will create a link in the post to a generalised site search for the term provided. For example, #[zrl=https://friendicared.net/search?tag=cars]cars[/zrl] will provide a search link for all posts mentioning 'cars' on your site. Topical tags are generally a minimum of three characters in length. Shorter search terms are not likely to yield any search results, although this depends on the database configuration. + +Topical tags are also not linked if they are purely numeric, e.g. #1. If you wish to use a numeric hashtag, please add some descriptive text such as #[zrl=https://friendicared.net/search?tag=2012-elections]2012-elections[/zrl]. + + +[b]Spaces in Tags and Mentions[/b] + +Where possible please use the auto-complete window to select tag and mention recipients, because it will generate a coded tag which uniquely identifies one channel. Names are sometimes ambiguous. However, you can "manually" tag a channel by matching the channel name or address. + +[code] +@Robert Johnson +[/code] + +will tag Robert Johnson, but we can only match one space. If the name was "Blind Lemon Jefferson" it won't be found unless you enclose the entire name in double quotes or change the spaces to underscores. + +[code] +@"Blind Lemon Jefferson" +@Blind_Lemon_Jefferson +[/code] + +are both equivalent. +#include doc/macros/main_footer.bb; diff --git a/doc/member/toc.html b/doc/member/toc.html new file mode 100644 index 000000000..6963c5ba9 --- /dev/null +++ b/doc/member/toc.html @@ -0,0 +1,25 @@ +

    Member Guide

    + diff --git a/doc/member/webpages.bb b/doc/member/webpages.bb new file mode 100644 index 000000000..2b909dc63 --- /dev/null +++ b/doc/member/webpages.bb @@ -0,0 +1,93 @@ +[b]Creating Web Pages[/b] + +Hubzilla enables users to create static webpages. To activate this feature, enable the web pages feature in your Additional Features section. + +Once enabled, a new tab will appear on your channel page labelled "Webpages". Clicking this link will take you to the webpage editor. +Pages will be accessible at mydomain/page/username/pagelinktitle + +The "page link title" box allows a user to specify the "pagelinktitle" of this URL. If no page link title is set, we will set one for you automatically, using the message ID of the item. + +Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages. + +See also: + +[zrl=[baseurl]/help/webpage-element-import]Webpage element import tool[/zrl] + +[b]Using Blocks[/b] + +Blocks can be parts of webpages. The basic HTML of a block looks like this +[code] +
    + Block Content +
    + +[/code] + +If a block has text/html content type it can also contain menu elements. Sample content of +[code] +

    HTML block content

    + [menu]menuname[/menu] + +[/code] +will produce HTML like this +[code] +
    +

    HTML block content

    +
    + +
    +
    + +[/code] + +Via the $content macro a block can also contain the actual webpage content. For this create a block with only +[code] + $content + +[/code]as content. + +To make a block appear in the webpage it must be defined in the page layout inside a region. +[code] + [region=aside] + [block]blockname[/block] + [/region] + +[/code] + +The block appearance can be manipulated in the page layout. + +Custom classes can be assigned +[code] + [region=aside] + [block=myclass]blockname[/block] + [/region] + +[/code] +will produce this HTML +[code] +
    + Block Content +
    + +[/code] + +Via the wrap variable a block can be stripped off its wrapping
    tag +[code] + [region=aside] + [block][var=wrap]none[/var]blockname[/block] + [/region] + +[/code] +will produce this HTML +[code] + Block Content + +[/code] + + +#include doc/macros/main_footer.bb; + diff --git a/doc/toc.html b/doc/toc.html index ac21959cf..90f0cbaeb 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -1,6 +1,6 @@ -- cgit v1.2.3 From 165a6d34b2c3869ca3f5244a81a612ee549afbc7 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sat, 26 Nov 2016 20:48:05 -0700 Subject: Update webpages and wiki context help --- doc/context/en/webpages/help.html | 4 ++-- doc/context/en/wiki/help.html | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'doc') diff --git a/doc/context/en/webpages/help.html b/doc/context/en/webpages/help.html index af57ee88a..a4817e4bf 100644 --- a/doc/context/en/webpages/help.html +++ b/doc/context/en/webpages/help.html @@ -3,6 +3,6 @@
    You can create modular, identity-aware websites composed of shareable elements.
    Pages
    This page lists your "pages", which are assigned URLs where people can visit your site. The structure of pages are typically described by an associated layout, and their content is constructed from a collection of blocks.
    -
    Website import tool
    -
    The website import tool allows you import multiple webpage elements (pages, layouts, blocks) either from an uploaded zip file or from an existing cloud files folder. Read more...
    +
    Website portation tools
    +
    The website portation tools allows you import/export multiple webpage elements (pages, layouts, blocks). You can import either from an uploaded zip file or from an existing cloud files folder. You can export to either a zip file containing a select group of webpage elements in a form compatible with the import tool, or you can export directly to a cloud files folder. Read more...
    \ No newline at end of file diff --git a/doc/context/en/wiki/help.html b/doc/context/en/wiki/help.html index a42914c17..5ac9b22ae 100644 --- a/doc/context/en/wiki/help.html +++ b/doc/context/en/wiki/help.html @@ -7,4 +7,6 @@
    Every revision of a page is saved to allow quick reversion. Click the History tab to view a history of page revisions, including the date and author of each. The revert button will load the selected revision but will not automatically save the page.
    Pages
    The list of pages in the wiki are listed in the Wiki Pages panel. Prior to saving page edits using the Page control dropdown menu, you may enter a custom message to be displayed in the Page History viewer along with the revision.
    +
    Channel Content Tabs
    +
    The channel content tabs are links to other content published by the channel. The About tab links to the channel profile. The Photos tab links to the channel photo galleries. The Files tab links to the general shared files published by the channel.
    \ No newline at end of file -- cgit v1.2.3 From 713a34c68e242c5bee927f3de41fffaeb2842bf1 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sun, 27 Nov 2016 08:34:23 -0700 Subject: Restructured main table of contents to link to fewer pages with more content. The admin, dev, and member guides are single pages each having a table of contents at the top that is represented in condensed form in the main navigation sidebar. Section links are used to navigate between content sections for simplicity and fewer page loads. --- doc/about/about_hubzilla.html | 24 ++ doc/admin/administrator_guide.html | 346 +++++++++++++++++++++++++++ doc/developer/developer_guide.html | 473 +++++++++++++++++++++++++++++++++++++ doc/member/member_guide.html | 18 ++ doc/member/toc.html | 25 -- doc/toc.html | 110 ++++++++- 6 files changed, 965 insertions(+), 31 deletions(-) create mode 100644 doc/about/about_hubzilla.html create mode 100644 doc/admin/administrator_guide.html create mode 100644 doc/developer/developer_guide.html create mode 100644 doc/member/member_guide.html delete mode 100644 doc/member/toc.html (limited to 'doc') diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html new file mode 100644 index 000000000..ec3c69307 --- /dev/null +++ b/doc/about/about_hubzilla.html @@ -0,0 +1,24 @@ +

    Table of Contents

    + + + +
    + +

    Project

    +

    + Hubzilla is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.

    Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

    Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.

    How you use it depends on how you want to use it.

    It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

    In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

    Along the way, Hubzilla offers a number of unique goodies:

    Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

    Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

    Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss. +

    + +

    Features

    +

    + Hubzilla in a Nutshell

    TL;DR

    Hubzilla provides distributed web publishing and social communications with decentralised permissions.

    So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily everybody on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.

    Hubzilla combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.

    Hubzilla is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.

    Hubzilla Features


    Hubzilla is a general-purpose web publishing and communication network, with several unique features.  It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.

    This page lists some of the core features of Hubzilla that are bundled with the official release.  As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.

    Built for Privacy and Freedom

    One of the design goals of Hubzilla is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, Hubzilla includes a number of features allowing arbitrary levels of privacy:

    Affinity Slider

    When adding connnections in Hubzilla, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection.  For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".

    On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".

    At this point, Hubzilla Affinity Slider tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.

    The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.

    Connection Filtering

    You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.  

    Access Control Lists

    When sharing content, members have the option of restricting who sees the content.  By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.

    Once sent, the message will be viewable only by the sender and the selected recipients.  In other words, the message will not appear on any public walls.

    Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.

    Single Sign-on

    Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other Hubzilla sites and used to control access to private resources. You login once to your home hub. After that, authentication to all Hubzilla resources is "magic".


    WebDAV enabled File Storage

    Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of Hubzilla members (including some third party network members) or make them public.

    Photo Albums

    Store photos in albums. All your photos may be protected by Access Control Lists.

    Events Calendar

    Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.

    Chatrooms

    You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.      

    Webpage Building

    Hubzilla has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.

    Apps

    Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in Hubzilla are free and can be created easily by those with no programming skills.

    Layout

    Page layout is based on a description language called Comanche. Hubzilla is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".

    Bookmarks

    Share and save/manage bookmarks from links provided in conversations.    


    Private Message Encryption and Privacy Concerns

    Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.  

    Each Hubzilla channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.

    Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by Hubzilla operators or ISPs or anybody who does not know the passcode.

    Public messages are generally not encrypted in transit or in storage.  

    Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.

    Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.  


    Service Federation

    In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as Hubzilla and may present privacy risks.

    There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your Hubzilla hub may be used as an OpenID provider to authenticate you to external services which use this technology.

    Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.

    Privacy Groups

    Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).  


    Directory Services

    We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal Hubzilla sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).  


    TLS/SSL

    For Hubzilla hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL.  Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.

    Channel Settings

    When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.  

    If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication.  For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.  

    The options are:

    - Nobody except yourself.
    - Only those you specifically allow.
    - Anybody in your address book.
    - Anybody on this website.
    - Anybody in this network.
    - Anybody authenticated.
    - Specific people you provide a Guest Access Token to in order to access a specific item.
    - Anybody on the Internet.


    Public and Private Forums

    Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.


    Account Cloning

    Accounts in Hubzilla are referred to as nomadic identities, because a member's identity is not bound to the hub where the identity was originally created.  For example, when you create a Facebook or Gmail account, it is tied to those services.  They cannot function without Facebook.com or Gmail.com.  

    By contrast, say you've created a Hubzilla identity called tina@Hubzillahub.com.  You can clone it to another Hubzilla hub by choosing the same, or a different name: liveForever@SomeHubzillaHub.info

    Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone.  It doesn't matter whether you send a post from your original hub, or the new hub.  Posts will be mirrored on both accounts.

    This is a rather revolutionary feature, if we consider some scenarios:

    - What happens if the hub where an identity is based suddenly goes offline?  Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale").  With cloning, you just log into your cloned account, and life goes on happily ever after.

    - The administrator of your hub can no longer afford to pay for his free and public Hubzilla hub. He announces that the hub will be shutting down in two weeks.  This gives you ample time to clone your identity(ies) and preserve yourHubzilla relationships, friends and content.

    - What if your identity is subject to government censorship?  Your hub provider may be compelled to delete your account, along with any identities and associated data.  With cloning, Hubzilla offers censorship resistance.  You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.  

    Hubzilla offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.

    Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.

    Multiple Profiles

    Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.

    Account Backup

    Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s).  

    Backups can then be used to clone or restore a profile.

    Account Deletion

    Accounts can be immediately deleted by clicking on a link. That's it.  All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.

    Content Creation

    Writing Posts

    Hubzilla supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in Hubzilla. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for Hubzilla had some serious issues and has since been removed. We are currently looking for a replacement.

    When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.

    Deletion of content
    Any content created in Hubzilla remains under the control of the member (or channel) that originally created it.  At any time, a member can delete a message, or a range of messages.  The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot (Hubzilla communication and authentication protocol).

    Media
    Similar to any other modern blogging system, social network, or a micro-blogging service, Hubzilla supports the uploading of files, embedding of videos, linking web pages.

    Previewing/Editing
    Post can be previewed prior to sending and edited after sending.

    Voting/Consensus
    Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.


    Extending Hubzilla

    Hubzilla can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.

    API

    An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to Hubzilla. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. +

    + +

    Zot protocol

    +

    + What is Zot?

    Zot is the protocol that powers Hubzilla, providing three core capabilities: Communications, Identity, and Access Control.

    The functionality it provides can also be described as follows:

    - a relationship online is just a bunch of permissions
    - the internet is just another folder

    Communications

    Zot is a revolutionary protocol which provides decentralised communications and identity management across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality.

    Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers.

    Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the Affinity Slider.

    You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of decentralized identity services.

    Identity

    Zot's identity layer is unique. It provides invisible single sign-on across all sites in the grid.

    It also provides nomadic identity, so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently.

    The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact.

    Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship.

    Nomadic identity, single sign-on, and Hubzilla's decentralization of hubs, we believe, introduce a high degree of degree of resiliency and persistence in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship.

    As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit.

    How does Zot do that? We call it magic-auth, because Hubzilla hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid.  This is one of the design goals of Hubzilla: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online.

    You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control.

    You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it.

    Access Control

    Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across Hubzilla. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create.

    Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control.

    This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid is your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers.

    Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it.

    Additional Resources and Links

    For more detailed, technical information about Zot, check out the following links:

    - A high level overview

    - Zot development specification

    - Zot reference implementation in PHP +

    \ No newline at end of file diff --git a/doc/admin/administrator_guide.html b/doc/admin/administrator_guide.html new file mode 100644 index 000000000..c0a5212ec --- /dev/null +++ b/doc/admin/administrator_guide.html @@ -0,0 +1,346 @@ +

    Table of Contents

    + +

    + +

    Overview

    + +

    Hubzilla is more than a simple web application. It is a +complex communications system which more closely resembles an email server +than a web server. For reliability and performance, messages are delivered in +the background and are queued for later delivery when sites are down. This +kind of functionality requires a bit more of the host system than the typical +blog. Not every PHP/MySQL hosting provider will be able to support +Hubzilla. Many will but please review the requirements and confirm these +with your hosting provider prior to installation.

    + +

    We've tried very hard to ensure that Hubzilla will run on commodity +hosting platforms such as those used to host Wordpress blogs and Drupal +websites. It will run on most any Linux VPS system. Windows LAMP platforms +such as XAMPP and WAMP are not officially supported at this time however +we welcome patches if you manage to get it working.

    + +

    Where to find more help

    + +

    If you encounter problems or have issues not addressed in this documentation, +please let us know via the Github issue +tracker. Please be as clear as you +can about your operating environment and provide as much detail as possible +about any error messages you may see, so that we can prevent it from happening +in the future. Due to the large variety of operating systems and PHP platforms +in existence we may have only limited ability to debug your PHP installation or +acquire any missing modules * but we will do our best to solve any general code +issues.

    + +

    Before you begin

    + +

    Choose a domain name or subdomain name for your server

    + +

    Hubzilla can only be installed into the root of a domain or sub-domain, and can +not be installed using alternate TCP ports.

    + +

    Decide if you will use SSL and obtain an SSL certificate before software installation

    + +

    You SHOULD use SSL. If you use SSL, you MUST use a "browser-valid" certificate.
    You MUST NOT use self-signed certificates!

    + +

    Please test your certificate prior to installation. A web tool for testing your +certificate is available at "http://www.digicert.com/help/". When visiting your +site for the first time, please use the SSL ("https://") URL if SSL is available. +This will avoid problems later. The installation routine will not allow you to +use a non browser-valid certificate.

    + +

    This restriction is incorporated because public posts from you may contain +references to images on your own hub. Other members viewing their stream on +other hubs will get warnings if your certificate is not trusted by their web +browser. This will confuse many people because this is a decentralised network +and they will get the warning about your hub while viewing their own hub and may +think their own hub has an issue. These warnings are very technical and scary to +some folks, many of whom will not know how to proceed except to follow the browser +advice. This is disruptive to the community. That said, we recognise the issues +surrounding the current certificate infrastructure and agree there are many +problems, but that doesn't change the requirement.

    + +

    Free "browser-valid" certificates are available from providers such as StartSSL +and LetsEncrypt.

    + +

    If you do NOT use SSL, there may be a delay of up to a minute for the initial +install script * while we check the SSL port to see if anything responds there. +When communicating with new sites, Hubzilla always attempts connection on the +SSL port first, before falling back to a less secure connection. If you do not +use SSL, your webserver MUST NOT listen on port 443 at all.

    + +

    If you use LetsEncrypt to provide certificates and create a file under +.well-known/acme-challenge so that LetsEncrypt can verify your domain ownership, +please remove or rename the .well-known directory as soon as the certificate is +generated. Hubzilla will provide its own handler for ".well-known" services when +it is installed, and an existing directory in this location may prevent some of +these services from working correctly. This should not be a problem with Apache, +but may be an issue with nginx or other web server platforms.

    + +

    Deployment

    + +

    There are several ways to deploy a new hub.

    + +
    • Manual installation on an existing server
    • +
    • Automated installation on an existing server using a shell script
    • +
    • Automated deployment using an OpenShift virtual private server (VPS)
    • +

    Requirements

    + +
    • Apache with mod-rewrite enabled and "AllowOverride All" so you can use a +local .htaccess file. Some folks have successfully used nginx and lighttpd. +Example config scripts are available for these platforms in doc/install. +Apache and nginx have the most support.

    • +
    • PHP 5.5 or later.

      + +
      • Note that on some shared hosting environments, the command line version of +PHP might differ from the webserver version
      • +
    • +
    • PHP command line access with register_argc_argv set to true in the +php.ini file * and with no hosting provider restrictions on the use of +exec() and proc_open().

    • +
    • curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt, +and openssl extensions. The imagick extension is not required but desirable.

    • +
    • xml extension is required if you want webdav to work.

    • +
    • some form of email server or email gateway such that PHP mail() works.

    • +
    • Mysql 5.x or MariaDB or postgres database server.

    • +
    • ability to schedule jobs with cron.

    • +
    • Installation into a top-level domain or sub-domain (without a +directory/path component in the URL) is REQUIRED.

    • +

    Manual Installation

    + +

    Unpack the Hubzilla files into the root of your web server document area

    + +

    If you copy the directory tree to your webserver, make sure that you include the +hidden files like .htaccess.

    + +

    If you are able to do so, we recommend using git to clone the source +repository rather than to use a packaged tar or zip file. This makes the +software much easier to update. The Linux command to clone the repository +into a directory "mywebsite" would be:

    + +
    git clone https://github.com/redmatrix/hubzilla.git mywebsite
    +
    + +

    and then you can pick up the latest changes at any time with:

    + +
    git pull
    +
    + +

    make sure folders store/[data]/smarty3 and store exist and are +writable by the webserver:

    + +
    mkdir -p "store/[data]/smarty3"
    +chmod -R 777 store
    +
    +This permission (777) is very dangerous and if you have sufficient
    +privilege and knowledge you should make these directories writeable
    +only by the webserver and, if different, the user that will run the
    +cron job (see below). In many shared hosting environments this may be
    +difficult without opening a trouble ticket with your provider. The
    +above permissions will allow the software to work, but are not
    +optimal.
    +
    + +

    The following directories also need to be writable by the webserver in order for certain +web-based administrative tools to function:

    + +
    • addon
    • +
    • extend
    • +
    • view/theme
    • +
    • widget
    • +

    Official addons

    + +

    Installation

    + +

    Navigate to your webThen you should clone the addon repository (separately). We'll give this repository a nickname of 'hzaddons'. You can pull in other hubzilla addon repositories by giving them different nicknames::

    + +
    cd mywebsite
    +util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
    +
    + +

    Updating

    + +

    For keeping the addon tree updated, you should be on your top level website directory and issue an update command for that repository::

    + +
    cd mywebsite
    +util/update_addon_repo hzaddons
    +
    + +

    Create searchable representations of the online documentation. You may do this + any time that the documentation is updated :

    + +
    cd mywebsite
    +util/importdoc
    +
    + +

    Automated installation via the .homeinstall shell script

    + +

    There is a shell script in (.homeinstall/hubzilla-setup.sh) that will install Hubzilla and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary.

    + +

    Requirements

    + +

    The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3:

    + +
    • Home-PC (Debian-8.3.0-amd64)

      + +
      • Internet connection and router at home
      • +
      • Mini-pc connected to your router
      • +
      • USB drive for backups
      • +
      • Fresh installation of Debian on your mini-pc
      • +
      • Router with open ports 80 and 443 for your Debian
      • +
    • +
    • DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3)

    • +

    Overview of installation steps

    + +
    1. apt-get install git
    2. +
    3. mkdir -p /var/www/html
    4. +
    5. cd /var/www/html
    6. +
    7. git clone https://github.com/redmatrix/hubzilla.git .
    8. +
    9. nano .homeinstall/hubzilla-config.txt
    10. +
    11. cd .homeinstall/
    12. +
    13. ./hubzilla-setup.sh
    14. +
    15. sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini
    16. +
    17. sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini
    18. +
    19. service apache2 reload
    20. +
    21. Open your domain with a browser and step throught the initial configuration of Hubzilla.
    22. +

    Service Classes

    + +

    Service classes allow you to set limits on system resources by limiting what individual +accounts can do, including file storage and top-level post limits. Define custom service +classes according to your needs in the .htconfig.php file. For example, create +a standard and premium class using the following lines:

    + +
    // Service classes
    +
    +App::$config['system']['default_service_class']='standard'; // this is the default service class that is attached to every new account
    +
    +// configuration for parent service class
    +App::$config['service_class']['standard'] =
    +array('photo_upload_limit'=>2097152, // total photo storage limit per channel (here 2MB)
    +'total_identities' =>1, // number of channels an account can create
    +'total_items' =>0, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected
    +'total_pages' =>100, // number of pages a channel can create
    +'total_channels' =>100, // number of channels the user can add, other users can still add this channel, even if the limit is reached
    +'attach_upload_limit' =>2097152, // total attachment storage limit per channel (here 2MB)
    +'chatters_inroom' =>20);
    +
    +// configuration for teacher service class
    +App::$config['service_class']['premium'] =
    +array('photo_upload_limit'=>20000000000, // total photo storage limit per channel (here 20GB)
    +'total_identities' =>20, // number of channels an account can create
    +'total_items' =>20000, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected
    +'total_pages' =>400, // number of pages a channel can create
    +'total_channels' =>2000, // number of channels the user can add, other users can still add this channel, even if the limit is reached
    +'attach_upload_limit' =>20000000000, // total attachment storage limit per channel (here 20GB)
    +'chatters_inroom' =>100);
    +
    + +

    To apply a service class to an existing account, use the command line utility from the +web root:

    + +

    util/service_class +list service classes

    + +

    util/config system default_service_class firstclass +set the default service class to 'firstclass'

    + +

    util/service_class firstclass +list the services that are part of 'firstclass' service class

    + +

    util/service_class firstclass photo_upload_limit 10000000 +set firstclass total photo disk usage to 10 million bytes

    + +

    util/service_class --account=5 firstclass +set account id 5 to service class 'firstclass' (with confirmation)

    + +

    util/service_class --channel=blogchan firstclass +set the account that owns channel 'blogchan' to service class 'firstclass' (with confirmation)

    + +

    Service class limit options

    + +
    • photo_upload_limit - maximum total bytes for photos
    • +
    • total_items - maximum total toplevel posts
    • +
    • total_pages - maximum comanche pages
    • +
    • total_identities - maximum number of channels owned by account
    • +
    • total_channels - maximum number of connections
    • +
    • total_feeds - maximum number of rss feed connections
    • +
    • attach_upload_limit - maximum file upload storage (bytes)
    • +
    • minimum_feedcheck_minutes - lowest setting allowed for polling rss feeds
    • +
    • chatrooms - maximum chatrooms
    • +
    • chatters_inroom - maximum chatters per room
    • +
    • access_tokens - maximum number of Guest Access Tokens per channel
    • +

    Theme management

    + +

    Repo management example

    + +
    1. Navigate to your hub web root

      + +

      root@hub:/root# cd /var/www

    2. +
    3. Add the theme repo and give it a name

      + +

      root@hub:/var/www# util/add_theme_repo https://github.com/DeadSuperHero/redmatrix-themes.git DeadSuperHero

    4. +
    5. Update the repo by using

      + +

      root@hub:/var/www# util/update_theme_repo DeadSuperHero

    6. +

    Channel Directory

    + +

    Keywords

    + +

    There is a "tag cloud" of keywords that can appear on the channel directory page. +If you wish to hide these keywords, which are drawn from the directory server, you +can use the config tool:

    + +
    util/config system disable_directory_keywords 1
    +
    + +

    If your hub is in the standalone mode because you do not wish to connect to the +global grid, you may instead ensure the the directory_server system option is +empty:

    + +
    util/config system directory_server ""
    +
    + +

    Upgrading from RedMatrix to Hubzilla

    + +

    How to migrate an individual channel from RedMatrix to Hubzilla

    + +
    1. Clone the channel by opening an account on a Hubzilla hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings.
    2. +
    3. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary.
    4. +
    5. Import the JSON data files sequentially in chronological order into the Hubzilla clone using the new.hub/import_items tool.
    6. +
    7. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address.
    8. +
    9. After successful import (check!) delete your channel on the old RedMatrix Server.
    10. +
    11. On the Hubzilla server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid.
    12. +

    Troubleshooting

    + +

    Log files

    + +

    Allow me to elaborate on logfiles...

    + +

    There are three different log facilities.

    + +

    The first is the database failure log. This is only used if you create a file called specifically 'dbfail.out' in the root folder of your website and make it write-able by the web server. If we have any database failed queries, they are all reported here. They generally indicate typos in our queries, but also occur if the database server disconnects or tables get corrupted. On rare occasions we'll see race conditions in here where two processes tried to create an xchan or cache entry with the same ID. Any other errors (especially persistent errors) should be investigated.

    + +

    The second is the PHP error log. This is created by the language processor and only reports issues in the language environment. Again these can be syntax errors or programming errors, but these generally are fatal and result in a "white screen of death"; e.g. PHP terminates. You should probably look at this file if something goes wrong that doesn't result in a white screen of death, but it isn't uncommon for this file to be empty for days on end.

    + +

    There are some lines at the bottom of the supplied .htconfig.php file; which if uncommented will enable a PHP error log (extremely useful for finding the source of white screen failures). This isn't done by default due to potential issues with logfile ownership and write permissions and the fact that there is no logfile rotation by default.

    + +

    The third is the "application log". This is used by Hubzilla to report what is going on in the program and usually reports any difficulties or unexpected data we received. It also occasionally reports "heartbeat" status messages to indicate that we reached a certain point in a script. This is the most important log file to us, as we create it ourself for the sole purpose of reporting the status of background tasks and anything that seems weird or out of place. It may not be fatal, but maybe just unexpected. If you're performing a task and there's a problem, let us know what is in this file when the problem occurred. (Please don't send me 100M dumps you'll only piss me off). Just a few relevant lines so I can rule out a few hundred thousand lines of code and concentrate on where the problem starts showing up.

    + +

    These are your site logs, not mine. We report serious issues at any log level. I highly recommend 'DEBUG' log level for most sites - which provides a bit of additional info and doesn't create huge logfiles. When there's a problem which defies all attempts to track, you might wish to use DATA log level for a short period of time to capture all the detail of what structures we were dealing with at the time. This log level will use a lot of space so is recommended only for brief periods or for developer test sites.

    + +

    I recommend configuring logrotate for both the php log and the application log. I usually have a look at dbfail.out every week or two, fix any issues reported and then starting over with a fresh file. Likewise with the PHP logfile. I refer to it once in a while to see if there's something that needs fixing.

    + +

    If something goes wrong, and it's not a fatal error, I look at the application logfile. Often I will +tail -f logfile.out

    + +

    While repeating an operation that has problems. Often I'll insert extra logging statements in the code if there isn't any hint what's going wrong. Even something as simple as "got here" or printing out the value of a variable that might be suspect. You can do this too - in fact I encourage you to do so. Once you've found what you need to find, you can

    + +

    git checkout file.php

    + +

    To immediately clear out all the extra logging stuff you added. Use the information from this log and any detail you can provide from your investigation of the problem to file your bug report - unless your analysis points to the source of the problem. In that case, just fix it.

    + +

    Rotating log files

    + +
    1. Enable the logrot addon in the official hubzilla-addons repo
    2. +
    3. Create a directory in your web root called log with webserver write permissions
    4. +
    5. Go to the logrot admin settings and enter this folder name as well as the max size and number of retained log files.
    6. +
    \ No newline at end of file diff --git a/doc/developer/developer_guide.html b/doc/developer/developer_guide.html new file mode 100644 index 000000000..34779a7e8 --- /dev/null +++ b/doc/developer/developer_guide.html @@ -0,0 +1,473 @@ +

    Table of Contents +

    + +

    Who is a Hubzilla developer? Should I read this?

    + +

    Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, even if you do not know how to write code. The software itself is only a part of the Hubzilla project. You can contribute by

    + +
    • translating text to your language so that people around the world have the opportunity to use Hubzilla
    • +
    • promoting Hubzilla and spreading awareness of the platform through blog posts, articles, and word-of-mouth
    • +
    • creating artwork and graphics for project assets such as icons and marketing material
    • +
    • supporting project infrastructure like the project website and demo servers
    • +

    Software developers are of course welcomed; there are so many great ideas to implement and not enough people to make them all a reality! The Hubzilla code base is an advanced and mature system, but the platform is still very flexible and responsive to new ideas.

    + +

    This document will help you get started learning and contributing to Hubzilla.

    + +

    Versioning system

    + +

    The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control.

    + +

    Git repository branches

    + +

    There are two official branches of the Hubzilla git repo.

    + +
    • The stable version is maintained on the master branch. The latest commit in this branch is considered to be suitable for production hubs.
    • +
    • Experimental development occurs on the dev branch, which is merged into master when it is deemed tested and stable enough.
    • +

    Developer tools and workflows

    + +

    Hub Snapshots

    + +

    The Hub Snapshots page provides instructions and scripts for taking complete +snapshots of a hub to support switching between consistent and completely known +states. This is useful to prevent situations where the content or database schema +might be incompatible with the code.

    + +

    Translations

    + +

    Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit https://www.transifex.com/projects/p/red-matrix/ and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files.

    + +

    Translation Process

    + +

    The strings used in the UI of Hubzilla is translated at [Transifex][1] and then +included in the git repository at github. If you want to help with translation +for any language, be it correcting terms or translating Hubzilla to a +currently not supported language, please register an account at transifex.com +and contact the Redmatrix translation team there.

    + +

    Translating Hubzilla is simple. Just use the online tool at transifex. If you +don't want to deal with git & co. that is fine, we check the status of the +translations regularly and import them into the source tree at github so that +others can use them.

    + +

    We do not include every translation from transifex in the source tree to avoid +a scattered and disturbed overall experience. As an uneducated guess we have a +lower limit of 50% translated strings before we include the language. This +limit is judging only by the amount of translated strings under the assumption +that the most prominent strings for the UI will be translated first by a +translation team. If you feel your translation useable before this limit, +please contact us and we will probably include your teams work in the source +tree.

    + +

    If you want to get your work into the source tree yourself, feel free to do so +and contact us with and question that arises. The process is simple and +Hubzilla ships with all the tools necessary.

    + +

    The location of the translated files in the source tree is + /view/LNG-CODE/ +where LNG-CODE is the language code used, e.g. de for German or fr for French. +For the email templates (the *.tpl files) just place them into the directory +and you are done. The translated strings come as a "hmessages.po" file from +transifex which needs to be translated into the PHP file Hubzilla uses. To do +so, place the file in the directory mentioned above and use the "po2php" +utility from the util directory of your Hubzilla installation.

    + +

    Assuming you want to convert the German localization which is placed in +view/de/hmessages.po you would do the following.

    + +
    1. Navigate at the command prompt to the base directory of your +Hubzilla installation

    2. +
    3. Execute the po2php script, which will place the translation +in the hstrings.php file that is used by Hubzilla.

      + +

      $> php util/po2php.php view/de/hmessages.po

      + +

      The output of the script will be placed at view/de/hstrings.php where +froemdoca os expecting it, so you can test your translation mmediately.

    4. +
    5. Visit your Hubzilla page to check if it still works in the language you +just translated. If not try to find the error, most likely PHP will give +you a hint in the log/warnings.about the error.

      + +

      For debugging you can also try to "run" the file with PHP. This should +not give any output if the file is ok but might give a hint for +searching the bug in the file.

      + +

      $> php view/de/hstrings.php

    6. +
    7. commit the two files with a meaningful commit message to your git +repository, push it to your fork of the Hubzilla repository at github and +issue a pull request for that commit.

    8. +

    Utilities

    + +

    Additional to the po2php script there are some more utilities for translation +in the "util" directory of the Hubzilla source tree. If you only want to +translate Hubzilla into another language you wont need any of these tools most +likely but it gives you an idea how the translation process of Hubzilla +works.

    + +

    For further information see the utils/README file.

    + +

    Known Problems

    + +
    • Hubzilla uses the language setting of the visitors browser to determain the +language for the UI. Most of the time this works, but there are some known +quirks.
    • +
    • the early translations are based on the friendica translations, if you +some rough translations please let us know or fix them at Transifex.
    • +

    To-be-organized information

    + +

    Here is how you can join us.

    + +

    First, get yourself a working git package on the system where you will be +doing development.

    + +

    Create your own github account.

    + +

    You may fork/clone the Red repository from https://github.com/redmatrix/hubzilla.git.

    + +

    Follow the instructions provided here: http://help.github.com/fork-a-repo/ +to create and use your own tracking fork on github

    + +

    Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work.

    + +

    Important

    + +

    Please pull in any changes from the project repository and merge them with your work before issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.

    + +

    Also - test your changes. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code.

    + +

    Licensing

    + +

    All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything.

    + +

    Coding Style

    + +

    In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future.

    + +
    • All comments should be in English.

    • +
    • We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged.

    • +
    • Indentation is accomplished primarily with tabs using a tab-width of 4.

    • +
    • String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';"

    • +
    • Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes.

    • +
    • Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability.

    • +
    • Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves.

    • +

    File system layout:

    + +

    [addon] optional addons/plugins

    + +

    [boot.php] Every process uses this to bootstrap the application structure

    + +

    [doc] Help Files

    + +

    [images] core required images

    + +

    [include] The "model" in MVC - (back-end functions), also contains PHP "executables" for background processing

    + +

    [index.php] The front-end controller for web access

    + +

    [install] Installation and upgrade files and DB schema

    + +

    [library] Third party modules (must be license compatible)

    + +

    [mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php)

    + +

    [mod/site/] site-specific mod overrides, excluded from git

    + +

    [util] translation tools, main English string database and other miscellaneous utilities

    + +

    [version.inc] contains current version (auto-updated via cron for the master repository and distributed via git)

    + +

    [view] theming and language files

    + +

    [view/(css,js,img,php,tpl)] default theme files

    + +

    [view/(en,it,es ...)] language strings and resources

    + +

    [view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides

    + +

    The Database:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TableDescription
    abconfigcontact table, replaces Friendica 'contact'
    abook
    accountservice provider account
    addon
    addressbookchanges
    addressbooks
    app
    atoken
    attach
    auth_codes
    cache
    cal
    calendarchanges
    calendarinstances
    calendarobjects
    calendars
    calendarsubscriptions
    cards
    channel
    chat
    chatpresence
    chatroom
    clients
    config
    conv
    dreport
    event
    group_member
    groupmembers
    groups
    hook
    hubloc
    iconfig
    issue
    item
    item_id
    likes
    locks
    mail
    menu
    menu_item
    notify
    obj
    outq
    pconfigpersonal (per channel) configuration storage
    photo
    poll
    poll_elm
    principals
    profdef
    profext
    profile
    profile_check
    propertystorage
    register
    schedulingobjects
    session
    shares
    sign
    site
    source
    sys_perms
    term
    tokens
    updates
    users
    verify
    vote
    xchan
    xchat
    xconfig
    xign
    xlink
    xperm
    xprof
    xtag
    * abook - contact table, replaces Friendica 'contact'
    +* account - service provider account
    +* addon - registered plugins
    +* app - peronal app data
    +* attach - file attachments
    +* auth_codes - OAuth usage
    +* cache - OEmbed cache
    +* channel - replaces Friendica 'user'
    +* chat - chat room content
    +* chatpresence - channel presence information for chat
    +* chatroom - data for the actual chat room
    +* clients - OAuth usage
    +* config - main configuration storage
    +* conv - Diaspora private messages
    +* event - Events
    +* fcontact - friend suggestion stuff
    +* ffinder - friend suggestion stuff
    +* fserver - obsolete
    +* fsuggest - friend suggestion stuff
    +* groups - privacy groups
    +* group_member - privacy groups
    +* hook - plugin hook registry
    +* hubloc - Red location storage, ties a location to an xchan
    +* item - posts
    +* item_id - other identifiers on other services for posts
    +* likes - likes of 'things'
    +* mail - private messages
    +* menu - channel menu data
    +* menu_item - items uses by channel menus
    +* notify - notifications
    +* notify-threads - need to factor this out and use item thread info on notifications
    +* obj - object data for things (x has y)
    +* outq - output queue
    +* pconfig - personal (per channel) configuration storage
    +* photo - photo storage
    +* poll - data for polls
    +* poll_elm - data for poll elements
    +* profdef - custom profile field definitions
    +* profext - custom profile field data
    +* profile - channel profiles
    +* profile_check - DFRN remote auth use, may be obsolete
    +* register - registrations requiring admin approval
    +* session - web session storage
    +* shares - shared item information
    +* sign - Diaspora signatures.  To be phased out.
    +* site - site table to find directory peers
    +* source - channel sources data
    +* spam - unfinished
    +* sys_perms - extensible permissions for the sys channel
    +* term - item taxonomy (categories, tags, etc.) table
    +* tokens - OAuth usage
    +* updates - directory sync updates
    +* verify - general purpose verification structure
    +* vote - vote data for polls
    +* xchan - replaces 'gcontact', list of known channels in the universe
    +* xchat - bookmarked chat rooms
    +* xconfig - as pconfig but for channels with no local account
    +* xlink - "friends of friends" linkages derived from poco
    +* xprof - if this hub is a directory server, contains basic public profile info of everybody in the network
    +* xtag - if this hub is a directory server, contains tags or interests of everybody in the network
    +
    + +

    How to theme Hubzilla

    + +

    This is a short documentation on what I found while trying to modify Hubzilla's appearance.

    + +

    First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it .

    + +

    Oh, and don't forget to rename the _init function in /php/theme.php to be _init() instead of redbasic_init().

    + +

    At that point, if you need to add javascript or css files, add them to /js or /css, and then "register" them in _init() through head_add_js('file.js') and head_add_css('file.css').

    + +

    Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory.

    + +

    We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine.

    + +

    Here is how you can join us.

    + +

    First, get yourself a working git package on the system where you will be +doing development.

    + +

    Create your own github account.

    + +

    You may fork/clone the Red repository from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url]

    + +

    Follow the instructions provided here: [url=http://help.github.com/fork-a-repo/]http://help.github.com/fork-a-repo/[/url] +to create and use your own tracking fork on github

    + +

    Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work.

    + +

    Translations

    + +

    Our translations are managed through Transifex. If you wish to help out translating the $Projectname to another language, sign up on transifex.com, visit [url=https://www.transifex.com/projects/p/red-matrix/]https://www.transifex.com/projects/p/red-matrix/[/url] and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files.

    + +

    Important

    + +

    Please pull in any changes from the project repository and merge them with your work before issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.

    + +

    Also - test your changes. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code.

    + +

    Further documentation can be found at the Github wiki pages at: [url=https://github.com/friendica/red/wiki]https://github.com/friendica/red/wiki[/url]

    + +

    Licensing

    + +

    All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything.

    + +

    Concensus Building

    + +

    Code changes which fix an obvious bug are pretty straight-forward. For instance if you click "Save" and the thing you're trying to save isn't saved, it's fairly obvious what the intended behaviour should be. Often when developing feature requests, it may affect large numbers of community members and it's possible that other members of the community won't agree with the need for the feature, or with your proposed implementation. They may not see something as a bug or a desirable feature.

    + +

    We encourage consensus building within the community when it comes to any feature which might be considered controversial or where there isn't unanimous decision that the proposed feature is the correct way to accomplish the task. The first place to pitch your ideas is to [url=https://zothub.com/channel/one]Channel One[/url]. Others may have some input or be able to point out facets of your concept which might be problematic in our environment. But also, you may encounter opposition to your plan. This doesn't mean you should stop and/or ignore the feature. Listen to the concerns of others and try and work through any implementation issues.

    + +

    There are places where opposition cannot be resolved. In these cases, please consider making your feature optional or non-default behaviour that must be specifically enabled. This technique can often be used when a feature has significant but less than unanimous support. Those who desire the feature can turn it on and those who don't want it - will leave it turned off.

    + +

    If a feature uses other networks or websites and or is only seen as desirable by a small minority of the community, consider making the functionality available via an addon or plugin. Once again, those who don't desire the feature won't need to install it. Plugins are relatively easy to create and "hooks" can be easily added or modified if the current hooks do not do what is needed to allow your plugin to work.

    + +

    Coding Style

    + +

    In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future.

    + +
    • All comments should be in English.

    • +
    • We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged.

    • +
    • Indentation is accomplished primarily with tabs using a tab-width of 4.

    • +
    • String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';"

    • +
    • Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes.

    • +
    • Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability.

    • +
    • Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves.

    • +
    • Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home".

    • +
    + \ No newline at end of file diff --git a/doc/member/member_guide.html b/doc/member/member_guide.html new file mode 100644 index 000000000..6614a4b2d --- /dev/null +++ b/doc/member/member_guide.html @@ -0,0 +1,18 @@ +

    Table of Contents

    + + + +
    + +

    Overview

    +

    +While many features and capabilities of Hubzilla are familiar to people who have +used social networking sites and blogging software, there are also quite a few new +concepts and features that most people have not encountered before. Some of the +new ideas are related to the decentralized nature of the grid; others are associated +with the advanced permissions system that is necessary to protect your data privacy. +The purpose of this guide is to help you understand how to create, configure, and +use your nomadic identity. +

    \ No newline at end of file diff --git a/doc/member/toc.html b/doc/member/toc.html deleted file mode 100644 index 6963c5ba9..000000000 --- a/doc/member/toc.html +++ /dev/null @@ -1,25 +0,0 @@ -

    Member Guide

    - diff --git a/doc/toc.html b/doc/toc.html index 90f0cbaeb..45214e210 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -1,6 +1,104 @@ - + + +
    +
    +
    +

    + + About +

    +
    + +
    +
    +
    +

    + + Members +

    +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +

    + + Developers +

    +
    +
    + +
    +
    +
    + + \ No newline at end of file -- cgit v1.2.3 From 99a4bb63c780a939673e2153226635133fbba0eb Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sun, 27 Nov 2016 12:52:35 -0700 Subject: Added Tutorials section with a Personal Channel tutorial --- doc/member/member_guide.html | 2 +- doc/toc.html | 16 ++++ doc/tutorials/personal_channel.html | 181 ++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+), 1 deletion(-) create mode 100644 doc/tutorials/personal_channel.html (limited to 'doc') diff --git a/doc/member/member_guide.html b/doc/member/member_guide.html index 6614a4b2d..d104b19c8 100644 --- a/doc/member/member_guide.html +++ b/doc/member/member_guide.html @@ -15,4 +15,4 @@ new ideas are related to the decentralized nature of the grid; with the advanced permissions system that is necessary to protect your data privacy. The purpose of this guide is to help you understand how to create, configure, and use your nomadic identity. -

    \ No newline at end of file +

    diff --git a/doc/toc.html b/doc/toc.html index 45214e210..4ee6eeea1 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -77,6 +77,19 @@ +
    +
    +

    + + Tutorials +

    +
    + +
    \ No newline at end of file -- cgit v1.2.3 From 2528f35f008dcc39e2a6c6680ab771a9da7c20f5 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Mon, 28 Nov 2016 06:36:19 -0700 Subject: Autoscroll page table of contents near top of side nav menu if on large screens, but set position to static on small screens to fix display bug --- doc/toc.html | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index da67ff88b..23eb57b64 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -8,14 +8,18 @@ .doco-list-group-item { padding-left: 15px; } - .widget { + #region_1 .widget { position: fixed; top:70px; width: inherit; height: 80%; overflow-y: scroll; } - + @media screen and (max-width: 767px) { + #region_1 .widget { + position: static; + } + }
    @@ -120,11 +124,13 @@ break; default: break; - } + } + // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) $(document).ready(function () { var tocUl = $('#page-toc-container').append('
      ').find('ul'); - tocUl.removeClass(); + tocUl.removeClass(); // Classes are automatically added to
        elements by something else tocUl.toc({content: "#doco-content", headings: "h1,h2,h3,h4"}); + $('#region_1 .widget').scrollTop($(tocUl).offset().top - $('#accordion').offset().top); }); - \ No newline at end of file + -- cgit v1.2.3 From 36acd34874cd768c5329082361731cfe952475af Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Tue, 29 Nov 2016 07:37:21 -0500 Subject: Toggle section folder icon between open and closed when selected. A bug prevents it from working properly the first time a section is opened. --- doc/toc.html | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 23eb57b64..9d0e99013 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -26,7 +26,7 @@
        @@ -40,7 +40,7 @@
        @@ -54,7 +54,7 @@
        @@ -70,7 +70,7 @@
        @@ -85,7 +85,7 @@
        @@ -131,6 +131,20 @@ tocUl.removeClass(); // Classes are automatically added to
          elements by something else tocUl.toc({content: "#doco-content", headings: "h1,h2,h3,h4"}); $('#region_1 .widget').scrollTop($(tocUl).offset().top - $('#accordion').offset().top); + + $('#accordion .panel-title').click(function(event) { + if(!$('#accordion .panel-title').find('a').hasClass('collapsed') && !$('#accordion .panel-title').is(this)) { + $('#accordion .panel-title').find('span').removeClass('glyphicon-folder-close').addClass('glyphicon-folder-open'); + } else { + $('#accordion .panel-title').find('span').removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close'); + } + if(!$(this).find('a').hasClass('collapsed')) { + $(this).find('span').removeClass('glyphicon-folder-open').addClass('glyphicon-folder-close'); + } else { + $(this).find('span').removeClass('glyphicon-folder-close').addClass('glyphicon-folder-open'); + } + + }); }); -- cgit v1.2.3 From b32bce9be22ca9c0c2b47e4a43282e9289c236ff Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Tue, 29 Nov 2016 22:08:19 -0500 Subject: Major changes to accordion nav menu. Table of contents auto-generated below the loaded page. Removed manual TOCs from individual pages. TOC uses jQuery plugin Sticky to remain visible when it would scroll out of view. --- doc/about/about_hubzilla.html | 331 +++++++++++++++++++++++++++- doc/admin/administrator_guide.html | 6 +- doc/developer/developer_guide.html | 3 - doc/member/member_faq.html | 8 +- doc/member/member_guide.html | 15 -- doc/toc.html | 421 +++++++++++++++++++++++++++++------- doc/tutorials/personal_channel.html | 14 -- 7 files changed, 673 insertions(+), 125 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html index ec3c69307..09fa7ae51 100644 --- a/doc/about/about_hubzilla.html +++ b/doc/about/about_hubzilla.html @@ -1,18 +1,333 @@ -

          Table of Contents

          - - -

          Project

          Hubzilla is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.

          Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

          Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.

          How you use it depends on how you want to use it.

          It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

          In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

          Along the way, Hubzilla offers a number of unique goodies:

          Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

          Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

          Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss.

          +

          History

          + + +

          Hubzilla is a community developed open source project based on work introduced in Friendica by the Friendica +community and which previously was named Redmatrix. The core design, the project mission, and software base itself were +created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using +variations of this platform and an evolving vision of the role of communication software in our lives. Many others have +contributed to this work, both conceptually and in terms of actual code (far too many to list individually).

          + +

          Mike Macgirvin -- Biography

          + +

          Mike Macgirvin is an American software engineer now living in Australia. He spent his early adult years designing and +repairing semiconductor fabrication equipment for a number of companies as a self-described "machine wizard". In 1985 he +became a research engineer at Stanford University for the Gravity Probe-B space mission and soon became a Unix systems +administrator writing communication software and utilities; and becoming an expert in emerging internet technologies +such as the now ubiquitous "World Wide Web". He authored an email "client" called "ML" which pioneered some advanced +concepts in encryption, the ability to filter message streams into different "views", and multi-protocol support; and +was an active proponent of and participant in the open source software movement. In 1996 he went to Netscape +Communications to become tech lead on their Messaging Server and integrate this with Collabra (groupware) into a +comprehensive communications server package. He stayed on after Netscape was acquired by America Online and was tech +manager of the Groups@AOL project until 2001.

          + +

          During a layoff round, Mike was let go from America Online in August 2001 and purchased a music store in Mountain +View, California later to be known as "Sonica Music Company". Opening a retail store for non-essential goods at the +beginning of a prolonged economic downturn was in retrospect probably not the wisest career move. Sonica eventually +folded; in late 2006. Mike returned to working on software and systems support full-time and was employed briefly at +Symantec before moving to Australia in early 2007. He currently lives on a farm "out in the middle of nowhere" and is +employed as a Computer Systems Officer at the University of Wollongong.

          + +

          Hubzilla - The Early Years

          + +

          The software which went into creating Hubzilla has been through several distinct historical phases. It began in 2003 +when Mike Macgirvin was looking for a content management system to power the website for his music store and found the +available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de +plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events +and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also +linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the +ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence +create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that +used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to +each other and not clash (or in this case Mike's personal website and the music store website). This software was +developed primarily from 2003 until 2008.

          + +

          In 2006 this software was used as the prototype for Symantec's "safeweb" reputation and community site. It was +developed and enhanced until about 2008. A rewrite took place in 2008 named "Reflection" but work stagnated as the +community dwindled. The need for content management systems and communications software dropped dramatically during this +time as humans flocked to the new social aggregrators - Facebook and Twitter.

          + +

          Mistpark/Friendica

          + +

          In early 2010, Mike left Facebook, concerned at the company's increasing hold and control of personal information. In +his words "Companies die. We watched it happen in the dot-com years. When they do, their databases are sold to the +highest bidder.". Mike used some remnants of the old CMS project to create a decentralised social communications +platform. This was launched in July 2010 as "Mistpark". The name was chosen as a tribute to his new home in the Southern +Highlands of Australia. The key innovation in this project was the ability to authenticate remotely and invisibly to +other decentralised instances of the software so to allow remote viewing of private photos and provide "wall-to-wall" +posting across website instances. The lack of simple remote identity provenance was a serious limitation of +other decentralised communication protocols.

          + +

          In late 2010, the name was changed to "Friendika". The name Friendika had some symbolic issues, since the suffix was +common with "swastika" and "Amerika", both having negative connotations, however the dot-com domain was available. +Friendica was in fact the first choice but the 'friendica.com' domain name was already registered. It became available a +year later and the project was renamed to Friendica in late 2011.

          + +

          Soon after version 1 was released in July 2010 - providing basic social communications, the software also took on a +new role - cross-service federation; which was first introduced in August and September 2010. Federation allowed the +software to "behave as" a StatusNet site and friends and messages could communicate to the other service from their own +platforms. It was also hoped to provide federation with Diaspora - a project with similar scope being developed in +secret in New York and first released in November of that year. Over the course of the next year, the federation ability +was extended to provide integrated communications from RSS feeds, to and from email, StatusNet, Facebook, Twitter, and +the emerging Diaspora project. The software provided a single "view" of your entire social space no matter what provider +you or your friends used. StatusNet and Diaspora were supported natively so that one account could access any of these +services. Facebook and Twitter used "API federation" which required the person to have an account on those services with +which to link.

          + +

          By July 2012, Twitter and Facebook had both changed their terms of service and essentially outlawed "API federation" +in the way Friendica was using it. Diaspora announced they were changing their protocol and would not maintain +compatibility nor provide any warning when compatibility would break (or documentation on the proposed changes). The +creator of StatusNet was also leaving his project to create something new (pump.io). As the software's primary purpose +by this time was "federation of different social services into one interface", this created a bit of a crisis. The +federated social web was crumbling. Also of concern was that independent and decentralised social websites shut down +frequently, requiring all their members to start over again on another site. Often the effort involved to do this seemed +daunting - and many people ran back to the relative safety of the large corporate providers - Facebook, Twitter, and now +Google+.

          + +

          Mike realised he did not want to be held hostage to the decisions that other projects and companies and independent +websites make. Friendica could operate on its own without attaching to these other networks, but its vision and +implementation of a federated social world depended on federation with others for its project identity - so this created +an identity crisis.

          + +

          Mike had been working on this project for some time and there were a number of things which needed re-writing, +including the base communication protocol which Friendica used (DFRN or the "Distributed Friends and Relations Network" +protocol). These ideas were starting to emerge as a different method of communication he called "zot". Zot began as a +way to create a common language for federated websites, but there was no interest in this ability and as mentioned, the +federated web was crumbling. The first version was soon scrapped and zot was re-designed and re-ignited as a streamlined +communication protocol which was location-independent; e.g. not tied to any website. This would allow people to carry on +unaffected if their website operator shut down temporarily or permanently. They wouldn't have to make friends all over +again, and permissions of everything on the system wouldn't have to be changed to allow bob@site1 to see something that +was private to him, even though he was now bob@site2. This was a serious problem with decentralisation. People moved and +their online identities were lost and had to be re-created from scratch and existing relationships destroyed and had to +be created all over again.

          + +

          Redmatrix

          + +

          In July 2012, Mike left the Friendica project and began development of "zot" and a new base project called "red" in +his somewhat elusive spare time. Red is Spanish for "network". It wasn't really a "social network" and +especially not a "federated social network". It was just Red (technically "la red"), or "the network". Work began by +removing all the "federation" components and going back to basics - communication and remote authentication. It was a +major re-write and took roughly six months before even basic communication was re-established. It was also no longer +compatible with Friendica - which had been given to the "Friendica community" and by this time (December 2012) was +developing separately on its own track.

          + +

          It became clear during this time that the single most compelling feature of the project wasn't the social network at +all, but the authentication layer and decentralised access control mechanisms. Combined with zot's location independence +it created a new model for software which had never existed previously - decentralised identity-aware web publishing and +single sign-on to any compatible provider across the web. These weren't evolutionary, they were +revolutionary. One of the biggest flaws of the modern web is the reliance on different passwords for +every service you use, or reliance on a single provider if you were to tie them to - say your Facebook login. Facebook +can remove your account at any time. Gone. If you rely on their authentication for all your websites, your entire online +identity - now gone. This is also what was missing from Friendica - a compelling software feature which could stand on +its own, without requiring a social network and especially without requiring a federated social network with all the +mentioned external dependencies.

          + +

          An early visitor to the project noted that he had some difficulty finding the project on Google because of the choice +of name - "red". Yes, this was a poor decision in retrospect. We were buried on page 23,712 of the search results. The +concept that was emerging around this identity-aware publishing was that of "a matrix of inter-connected thought +streams", since we didn't have a concept of "people" and "friends". All were just connected "channels" with different +ways to connect. So "Redmatrix" was chosen to give it a searchable name. It had nothing to do with the Matrix film and +red and blue pills, though that is frequently cited (erronously); and in fact isn't a bad analogy.

          + +

          The concept of identity-aware content was alien to anything that existed previously on the web, so to make it useful +we had to provide the ability to use it for content. It needed content publishing tools. This brought back concepts from +the old "Content Management System" on which the software was originally based. To get it up and running quickly we +created a markup language for webpages called "Comanche" which let you describe a page in high-level terms based on +bbcode tags. We also added WebDAV so you could put decentralised access control on files and drag/drop from your +operating system. So now you could have private photos, webpages, files, events, conversations, chatrooms - and they are +visible to those you choose - no matter what site they use. All they need is zot. And your viewers could move to another +site or just pop up at a different site any time they want and we don't care. And it also had a +built-in social network; with lots of additional privacy and encryption features which were added even before the +Snowden revelations gave them added urgency.

          + +

          Over time a few federation components re-emerged. The ability to view RSS feeds was important to many people. +Diaspora never really managed to re-write their protocol, so that was re-implemented and allowed Redmatrix to connect +with Diaspora and Friendica again (Friendica still had their Diaspora protocol intact, so this was the most common +language now remaining on the free web - despite its faults). Diaspora communications aren't able to make use of the +advanced identity features, but they work for basic communications.

          + +

          Hubzilla

          + +

          The Redmatrix project reached a point of stagnation in early 2015 as network growth leveled and active interest in +the project declined. Mike met with several external high tech developers and innovators in a round of discussions that +were called "Zotopia" in early 2015 to perform an independent review of the project and try to identify what had gone +wrong and plan a route forward. The basic consensus is that the project suffered from bad marketing decisions which were +compounded by mixed messages about the project goals and target audience. A "rival" project (Diaspora) was marketing +itself as a Facebook competitor, but after some long discussions it was determined that Redmatrix wasn't a Facebook +competitor at all, and too much emphasis was being placed on the "social network" and "anti-Facebook" features. It was a +novel decentralisation platform with distributed identity and permissions, and as was pointed out, the "end user" was +the wrong target market. These marketing mistakes were now identified with the project name and random sampling of +various "customers" showed that none of them really had a clue about the software goals or target market segment. The +mixed messages were associated with the brand identity and this was a problem.

          + +

          The Redmatrix community held a vote and the project was renamed "Hubzilla", with a renewed identity and focus - to +provide software for creating and ultimately linking together unrelated community websites or "hubs" into a global +community. This is in fact what we were building all along, but didn't fully recognise it. The target audience for this +software as it turns out is not the members or end users, but software integrators and digital community architects and +builders. These in turn will be responsible for marketing their own product (their respective online communities) to +end-users or members. The software solves a real world need of linking isolated and "walled garden" community sites +together into a larger cooperative. The transition from Redmatrix to Hubzilla was complex and has taken several months +as we consolidated the marketing and media assets to deliver a consistent message. It is still ongoing at this time, and +should be completed in Q4 2015.

          + +

          Mike stepped down as active coordinator for the project in early 2015 and turned management over to the community. He +remains active as a Hubzilla developer.

          + +

          And Then...

          + +

          In 2016, the project was re-architected to support multiple server "roles". These correspond to sub-projects which +can be isolated from each other in terms of supported feature sets, but all use and support the same code-base and +developers are able to work together on common features and goals. The roles primarily differ in target audience, +project governance and decision making structures, and this results in slightly +different features and idealogy. They all share a common code repository.

          + +

          Those roles are:

          + +

          Basic

          + +

          Entry level server. Supported by and governed by the Hubzilla community. Most advanced or complex features have been +stripped away to ease federation with external services. It is best suited as a FOSS social network tool.

          + +

          Standard

          + +

          The standard Hubzilla server. This provides a wide range of useful features and is supported by and governed by the +Hubzilla community. It is best suited as an open source community and cloud server.

          + +

          Pro

          + +

          This is a specially crafted server with a unique feature set. It is supported by and governed by Mike Macgirvin dba +"Zotlabs". Federation with external services has been stripped away in order to support a wide range of more technically +advanced and complex features; and also includes features and modes which may not have the support or backing of the +Hubzilla open source community. It is best suited for business and workplace applications.

          + + + +

          Governance

          + +

          Governance relates to the management of a project and particularly how this relates to conflict +resolution.

          This project uses a dual-governance model.

          The project as a whole and the repository were +created initially by Mike Macgirvin; who controls the project copyright, and the project license, and manages the +project as a Self Appointed Benevolent Dictator for Life. He holds veto power over any project proposal or decision and +his word is final.

          That said, Mike has no interest in running the day to day activities of the project and +influencing its direction, other than to protect his own work from sabotage.

          The internal project structure +contains multiple "configurations" known as 'basic', 'standard', and 'pro'. Mike's veto power extends to any proposal or +decision which he feels might adversely affect the 'pro' configuration.

          The 'basic and 'standard' configurations +are controlled completely by the community. If the proposal or decision is crafted in such a way that its effects are +limited to these configurations, Mike will consider relinquishing his power of veto and convert it to a normal community +vote.

          Mario Vavti has done an incredible amount of work on the usability and theming of the project and holds +veto power over any proposal or decision which might impact usability and "look and feel"; and his decision is also +final.

          Mario's veto power is likewise restricted to anything using the standard project 'theme'. If a new theme +is created and an otherwise vetoed decision is implemented entirely in this different theme and has no impact on the +standard project theme, his veto may also be turned into a normal community vote.

          This ability +to work around a veto is at the discretion of Mike and Mario. They may choose to relinquish their veto +if the scope of the work is limited as described above, and in most circumstances they will leave the decision to the +community. They are not obligated to do so.

          Community Governance

          Beyond those two special cases, +the project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the +structure is finalised, decisions are made in the following order:


          • Lazy Consensus

            If a project proposal is made to one of the community +governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually +provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered +approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds +provided, it will still be considered approved.

          • Veto

            If a proposal is vetoed, it is not +necessarily the final word. See above on how to convert a veto into a normal community vote. This can be done by framing +the proposal so that it does not impact the 'pro' configuration or the standard theme.

          • Community +Vote

            A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a +community vote. At present this is a simple popular vote in one of the applicable community forums.  At this +time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance +model. This document will be updated at that time with the updated governance rules.

          Community +Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason +why other models are under consideration). If the proposal is 'down voted' there are still several things which can be +done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional +feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate +lots of bad feelings amongst the losing voters. On such close votes, it is strongly recommended that +the proposer take steps to address any concerns that were raised and re-submit.

          + + + +

          Privacy Policy

          + +

          Summary

          + +

          Q: Who can see my content?

          + +

          A: By default ANYBODY on the internet, UNLESS you restrict it. Hubzilla allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within Hubzilla which are even resistant to eavesdropping by skilled and determined hub administrators.

          + +

          Q: Can my content be censored?

          + +

          A: Hubzilla (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws.

          + +

          Definitions

          + +

          Hubzilla

          + +

          Otherwise referred to as "the network", Hubzilla is a collection of individual computers/servers (aka hubs) which connect together to form a larger cooperative network.

          + +

          hub

          + +

          An individual computer or server connected to Hubzilla. These are provided by a hub administrator and may be public or private, paid or free.

          + +

          hub administrator

          + +

          The system operator of an individual hub.

          + +

          Policies

          + +

          Public Information

          + +

          Any information or anything posted by you within Hubzilla MAY be public or visible to anybody on the internet. To the extent possible, Hubzilla allows you to protect content and restrict who can view it.

          + +

          Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items.

          + +

          You MAY additionally provide other profile information. Any information which you provide in your "default" or public profile MAY be transmitted to other hubs in Hubzilla and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information.

          + +

          Content

          + +

          Content you provide (status posts, photos, files, etc.) belongs to you. Hubzilla default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). Hubzilla developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.

          + +

          Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other Hubzilla sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.

          + +

          Comments and Forum posts

          + +

          Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation.

          + +

          Private Information

          + +

          Hubzilla developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator.

          + +

          Identity Privacy

          + +

          Privacy for your identity is another aspect. Because you have a decentralized identity in Hubzilla, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible.

          + +

          A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in Hubzilla network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking.

          + +
            +
          • You can enable Do Not Track (DNT) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of Hubzilla. This setting is probably enough for most people.
          • +
          + +

          *You can disable publication of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.

          + +
            +
          • You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set.
          • +
          + +

          Censorship

          + +

          Hubzilla is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends.

          + +

          Hubzilla as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the Terms of Service of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but Hubzilla as a network cannot block it from being posted.

          + +

          Hubzilla RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a Hubzilla decision.

          + +

          If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences.

          + + +

          Features

          Hubzilla in a Nutshell

          TL;DR

          Hubzilla provides distributed web publishing and social communications with decentralised permissions.

          So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily everybody on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.

          Hubzilla combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.

          Hubzilla is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.

          Hubzilla Features


          Hubzilla is a general-purpose web publishing and communication network, with several unique features.  It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.

          This page lists some of the core features of Hubzilla that are bundled with the official release.  As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.

          Built for Privacy and Freedom

          One of the design goals of Hubzilla is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, Hubzilla includes a number of features allowing arbitrary levels of privacy:

          Affinity Slider

          When adding connnections in Hubzilla, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection.  For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".

          On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".

          At this point, Hubzilla Affinity Slider tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.

          The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.

          Connection Filtering

          You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.  

          Access Control Lists

          When sharing content, members have the option of restricting who sees the content.  By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.

          Once sent, the message will be viewable only by the sender and the selected recipients.  In other words, the message will not appear on any public walls.

          Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.

          Single Sign-on

          Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other Hubzilla sites and used to control access to private resources. You login once to your home hub. After that, authentication to all Hubzilla resources is "magic".


          WebDAV enabled File Storage

          Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of Hubzilla members (including some third party network members) or make them public.

          Photo Albums

          Store photos in albums. All your photos may be protected by Access Control Lists.

          Events Calendar

          Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.

          Chatrooms

          You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.      

          Webpage Building

          Hubzilla has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.

          Apps

          Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in Hubzilla are free and can be created easily by those with no programming skills.

          Layout

          Page layout is based on a description language called Comanche. Hubzilla is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".

          Bookmarks

          Share and save/manage bookmarks from links provided in conversations.    


          Private Message Encryption and Privacy Concerns

          Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.  

          Each Hubzilla channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.

          Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by Hubzilla operators or ISPs or anybody who does not know the passcode.

          Public messages are generally not encrypted in transit or in storage.  

          Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.

          Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.  


          Service Federation

          In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as Hubzilla and may present privacy risks.

          There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your Hubzilla hub may be used as an OpenID provider to authenticate you to external services which use this technology.

          Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.

          Privacy Groups

          Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).  


          Directory Services

          We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal Hubzilla sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).  


          TLS/SSL

          For Hubzilla hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL.  Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.

          Channel Settings

          When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.  

          If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication.  For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.  

          The options are:

          - Nobody except yourself.
          - Only those you specifically allow.
          - Anybody in your address book.
          - Anybody on this website.
          - Anybody in this network.
          - Anybody authenticated.
          - Specific people you provide a Guest Access Token to in order to access a specific item.
          - Anybody on the Internet.


          Public and Private Forums

          Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.


          Account Cloning

          Accounts in Hubzilla are referred to as nomadic identities, because a member's identity is not bound to the hub where the identity was originally created.  For example, when you create a Facebook or Gmail account, it is tied to those services.  They cannot function without Facebook.com or Gmail.com.  

          By contrast, say you've created a Hubzilla identity called tina@Hubzillahub.com.  You can clone it to another Hubzilla hub by choosing the same, or a different name: liveForever@SomeHubzillaHub.info

          Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone.  It doesn't matter whether you send a post from your original hub, or the new hub.  Posts will be mirrored on both accounts.

          This is a rather revolutionary feature, if we consider some scenarios:

          - What happens if the hub where an identity is based suddenly goes offline?  Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale").  With cloning, you just log into your cloned account, and life goes on happily ever after.

          - The administrator of your hub can no longer afford to pay for his free and public Hubzilla hub. He announces that the hub will be shutting down in two weeks.  This gives you ample time to clone your identity(ies) and preserve yourHubzilla relationships, friends and content.

          - What if your identity is subject to government censorship?  Your hub provider may be compelled to delete your account, along with any identities and associated data.  With cloning, Hubzilla offers censorship resistance.  You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.  

          Hubzilla offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.

          Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.

          Multiple Profiles

          Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.

          Account Backup

          Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s).  

          Backups can then be used to clone or restore a profile.

          Account Deletion

          Accounts can be immediately deleted by clicking on a link. That's it.  All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.

          Content Creation

          Writing Posts

          Hubzilla supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in Hubzilla. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for Hubzilla had some serious issues and has since been removed. We are currently looking for a replacement.

          When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.

          Deletion of content
          Any content created in Hubzilla remains under the control of the member (or channel) that originally created it.  At any time, a member can delete a message, or a range of messages.  The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot (Hubzilla communication and authentication protocol).

          Media
          Similar to any other modern blogging system, social network, or a micro-blogging service, Hubzilla supports the uploading of files, embedding of videos, linking web pages.

          Previewing/Editing
          Post can be previewed prior to sending and edited after sending.

          Voting/Consensus
          Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.


          Extending Hubzilla

          Hubzilla can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.

          API

          An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to Hubzilla. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. diff --git a/doc/admin/administrator_guide.html b/doc/admin/administrator_guide.html index c0a5212ec..674d2a916 100644 --- a/doc/admin/administrator_guide.html +++ b/doc/admin/administrator_guide.html @@ -1,8 +1,4 @@ -

          Table of Contents

          - -

          - -

          Overview

          +

          Overview

          Hubzilla is more than a simple web application. It is a complex communications system which more closely resembles an email server diff --git a/doc/developer/developer_guide.html b/doc/developer/developer_guide.html index 34779a7e8..77d622221 100644 --- a/doc/developer/developer_guide.html +++ b/doc/developer/developer_guide.html @@ -1,6 +1,3 @@ -

          Table of Contents -

          -

          Who is a Hubzilla developer? Should I read this?

          Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, even if you do not know how to write code. The software itself is only a part of the Hubzilla project. You can contribute by

          diff --git a/doc/member/member_faq.html b/doc/member/member_faq.html index f55b1fd98..fa124c1b1 100644 --- a/doc/member/member_faq.html +++ b/doc/member/member_faq.html @@ -9,11 +9,11 @@
          -

          I am able to edit a post's text after I saved it, but is there a way to change the permissions?

          +

          I am able to edit a post's text after I saved it, but is there a way to change the permissions?


          Short answer: No, there isn't. There are reasons. You are able to change permissions to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other Hubzilla servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to Hubzilla posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it.
          If a posting is public this is even harder, as Hubzilla is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post.

          -

          I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???

          +

          I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???


          Posts and photos/files are provided separately from the channel basic information. This is due to memory limitations dealing with years of conversations and photo archives. Posts and conversations can be synced separately from the basic channel information. Photos and file archives can be transferred using a plugin tool such as 'redfiles', which is currently listed as "experimental".  When creating this feature we thought that keeping all your contacts was the most important task. Your friends have already seen your old content. Posts/conversations were next in priority and these may now be synced. Files and photos are the last bit to get completely working. Once we find someone willing to finish implementing this, it will be done. :)
          -

          I can't see private resources

          +

          I can't see private resources


          You have probably disabled third party cookies.  You need to enable them for remote authentication to work.
          -

          There are a lot of foreign language posts. Let's auto-translate them.

          +

          There are a lot of foreign language posts. Let's auto-translate them.


          There are also a lot of private foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called Apertium which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen. diff --git a/doc/member/member_guide.html b/doc/member/member_guide.html index 97c5c9be2..62a4cdabe 100644 --- a/doc/member/member_guide.html +++ b/doc/member/member_guide.html @@ -1,18 +1,3 @@ -

          Table of Contents

          - - - -

          Overview

          While many features and capabilities of diff --git a/doc/toc.html b/doc/toc.html index 9d0e99013..f9d766849 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -8,17 +8,25 @@ .doco-list-group-item { padding-left: 15px; } - #region_1 .widget { - position: fixed; - top:70px; - width: inherit; - height: 80%; - overflow-y: scroll; + .doco-list-group-item > a { + font-weight: bold; + font-size: 1.1em; + } + + #doco-content h1 { + border-bottom: #cccccc thin solid; + padding-bottom: 0.3em; } - @media screen and (max-width: 767px) { - #region_1 .widget { - position: static; - } + + #region_1 .widget ul ul { + list-style-type: none; + padding-left: 15px; + } + + .toc-content { + background-color: white; + border-left: #cccccc 2px solid; + margin-left: 10px; } @@ -26,70 +34,65 @@

          -
          -
          +
          -
          -
          +
          -
          +
          @@ -97,54 +100,320 @@
          -
          -

          Contents

          -
          - + + diff --git a/doc/tutorials/personal_channel.html b/doc/tutorials/personal_channel.html index 37c9fc63a..3b1fe40ba 100644 --- a/doc/tutorials/personal_channel.html +++ b/doc/tutorials/personal_channel.html @@ -1,17 +1,3 @@ -

          Table of Contents

          - - - -
          - -

          Personal Channel

          This tutorial is intended to be followed in sequence as if you were setting up a channel for the first time. It introduces some of the tools and features related -- cgit v1.2.3 From 5b09829959948b85fa6b156abaa091c40d88a9e1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 30 Nov 2016 16:22:31 -0800 Subject: zot 1.2 --- doc/hook/crypto_methods.bb | 5 +++++ doc/hook/other_encapsulate.bb | 7 +++++++ doc/hook/other_unencapsulate.bb | 5 +++++ doc/hooklist.bb | 9 +++++++++ 4 files changed, 26 insertions(+) create mode 100644 doc/hook/crypto_methods.bb create mode 100644 doc/hook/other_encapsulate.bb create mode 100644 doc/hook/other_unencapsulate.bb (limited to 'doc') diff --git a/doc/hook/crypto_methods.bb b/doc/hook/crypto_methods.bb new file mode 100644 index 000000000..1b16f567d --- /dev/null +++ b/doc/hook/crypto_methods.bb @@ -0,0 +1,5 @@ +[h2]crypto_mthods[/h2] + +Passed an array of crypto methods in local priority order. + +You may change the order and add new methods or disable existing methods. 'aes256cbc' is always supported as a fallback and currently removing this has no effect. \ No newline at end of file diff --git a/doc/hook/other_encapsulate.bb b/doc/hook/other_encapsulate.bb new file mode 100644 index 000000000..ea0cdf622 --- /dev/null +++ b/doc/hook/other_encapsulate.bb @@ -0,0 +1,7 @@ +[h2]other_encapsulate[/h2] + +Passed an array of 'data', 'pubkey', 'alg', 'result' when encrypting data with an algorithm (alg) which is unknown to the system. Hooks are expected to identify their algorithm, encrypt data with pubkey and place the result in 'result'. + + + + diff --git a/doc/hook/other_unencapsulate.bb b/doc/hook/other_unencapsulate.bb new file mode 100644 index 000000000..c8b0b617f --- /dev/null +++ b/doc/hook/other_unencapsulate.bb @@ -0,0 +1,5 @@ +[h2]other_unencapsulate[/h2] + +Passed an array of 'data', 'prvkey', 'alg', 'result' when decrypting data with an algorithm (alg) which is unknown to the system. Hooks are expected to identify their algorithm, decrypt data with prvkey and place the result in 'result'. + + diff --git a/doc/hooklist.bb b/doc/hooklist.bb index 5226e7de6..52af9608c 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -145,6 +145,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/cron_weekly]cron_weekly[/zrl] Called when weekly scheduled tasks are executed +[zrl=[baseurl]/help/hook/crypto_methods]crypto_methods[/zrl] + Called when generating a list of crypto algorithms in the locally preferred order + [zrl=[baseurl]/help/hook/directory_item]directory_item[/zrl] Called when generating a directory listing for display @@ -386,6 +389,12 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/oembed_probe]oembed_probe[/zrl] Called when performing an oembed content lookup +[zrl=[baseurl]/help/hook/other_encapsulate]other_encapsulate[/zrl] + Called when encrypting content for which the algorithm is unknown (see also crypto_methods) + +[zrl=[baseurl]/help/hook/other_unencapsulate]other_unencapsulate[/zrl] + Called when decrypting content for which the algorithm is unknown (see also crypto_methods) + [zrl=[baseurl]/help/hook/page_content_top]page_content_top[/zrl] Called when we generate a webpage (before calling the module content function) -- cgit v1.2.3 From 731b6ebfa76ea9c15b9d90a68daeed0063034af9 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 30 Nov 2016 21:57:00 -0500 Subject: Added some vertical offset to headings so that the table of contents links do not hide the heading under the navbar. Added the About this Hub content --- doc/about/about_hub.html | 10 ++++++++++ doc/about/about_hubzilla.html | 2 +- doc/toc.html | 8 ++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 doc/about/about_hub.html (limited to 'doc') diff --git a/doc/about/about_hub.html b/doc/about/about_hub.html new file mode 100644 index 000000000..b6e0dc068 --- /dev/null +++ b/doc/about/about_hub.html @@ -0,0 +1,10 @@ +

          Terms of Service

          + + +

          Site Info

          + \ No newline at end of file diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html index 09fa7ae51..43eee211b 100644 --- a/doc/about/about_hubzilla.html +++ b/doc/about/about_hubzilla.html @@ -1,6 +1,6 @@ -

          Project

          +

          Hubzilla Project

          Hubzilla is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.

          Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

          Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.

          How you use it depends on how you want to use it.

          It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

          In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

          Along the way, Hubzilla offers a number of unique goodies:

          Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

          Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

          Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss.

          diff --git a/doc/toc.html b/doc/toc.html index f9d766849..e0200c1e1 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -18,6 +18,14 @@ padding-bottom: 0.3em; } + #doco-content > h1, + #doco-content > h2, + #doco-content > h3, + #doco-content > h4 { + padding-top: 60px; + margin-top: -60px; + } + #region_1 .widget ul ul { list-style-type: none; padding-left: 15px; -- cgit v1.2.3 From 41362e2b6ec63ead64af2578e3843e90f45395cb Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 30 Nov 2016 22:14:42 -0500 Subject: Reverted governance to previous version accidentally clobbered. Removed history page. Added credits. --- doc/about/about_hubzilla.html | 333 ++++++++++++------------------------------ 1 file changed, 92 insertions(+), 241 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html index 43eee211b..a6133bb86 100644 --- a/doc/about/about_hubzilla.html +++ b/doc/about/about_hubzilla.html @@ -5,248 +5,9 @@ Hubzilla is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.

          Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

          Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.

          How you use it depends on how you want to use it.

          It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

          In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

          Along the way, Hubzilla offers a number of unique goodies:

          Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

          Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

          Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss.

          -

          History

          - - -

          Hubzilla is a community developed open source project based on work introduced in Friendica by the Friendica -community and which previously was named Redmatrix. The core design, the project mission, and software base itself were -created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using -variations of this platform and an evolving vision of the role of communication software in our lives. Many others have -contributed to this work, both conceptually and in terms of actual code (far too many to list individually).

          - -

          Mike Macgirvin -- Biography

          - -

          Mike Macgirvin is an American software engineer now living in Australia. He spent his early adult years designing and -repairing semiconductor fabrication equipment for a number of companies as a self-described "machine wizard". In 1985 he -became a research engineer at Stanford University for the Gravity Probe-B space mission and soon became a Unix systems -administrator writing communication software and utilities; and becoming an expert in emerging internet technologies -such as the now ubiquitous "World Wide Web". He authored an email "client" called "ML" which pioneered some advanced -concepts in encryption, the ability to filter message streams into different "views", and multi-protocol support; and -was an active proponent of and participant in the open source software movement. In 1996 he went to Netscape -Communications to become tech lead on their Messaging Server and integrate this with Collabra (groupware) into a -comprehensive communications server package. He stayed on after Netscape was acquired by America Online and was tech -manager of the Groups@AOL project until 2001.

          - -

          During a layoff round, Mike was let go from America Online in August 2001 and purchased a music store in Mountain -View, California later to be known as "Sonica Music Company". Opening a retail store for non-essential goods at the -beginning of a prolonged economic downturn was in retrospect probably not the wisest career move. Sonica eventually -folded; in late 2006. Mike returned to working on software and systems support full-time and was employed briefly at -Symantec before moving to Australia in early 2007. He currently lives on a farm "out in the middle of nowhere" and is -employed as a Computer Systems Officer at the University of Wollongong.

          - -

          Hubzilla - The Early Years

          - -

          The software which went into creating Hubzilla has been through several distinct historical phases. It began in 2003 -when Mike Macgirvin was looking for a content management system to power the website for his music store and found the -available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de -plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events -and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also -linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the -ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence -create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that -used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to -each other and not clash (or in this case Mike's personal website and the music store website). This software was -developed primarily from 2003 until 2008.

          - -

          In 2006 this software was used as the prototype for Symantec's "safeweb" reputation and community site. It was -developed and enhanced until about 2008. A rewrite took place in 2008 named "Reflection" but work stagnated as the -community dwindled. The need for content management systems and communications software dropped dramatically during this -time as humans flocked to the new social aggregrators - Facebook and Twitter.

          - -

          Mistpark/Friendica

          - -

          In early 2010, Mike left Facebook, concerned at the company's increasing hold and control of personal information. In -his words "Companies die. We watched it happen in the dot-com years. When they do, their databases are sold to the -highest bidder.". Mike used some remnants of the old CMS project to create a decentralised social communications -platform. This was launched in July 2010 as "Mistpark". The name was chosen as a tribute to his new home in the Southern -Highlands of Australia. The key innovation in this project was the ability to authenticate remotely and invisibly to -other decentralised instances of the software so to allow remote viewing of private photos and provide "wall-to-wall" -posting across website instances. The lack of simple remote identity provenance was a serious limitation of -other decentralised communication protocols.

          - -

          In late 2010, the name was changed to "Friendika". The name Friendika had some symbolic issues, since the suffix was -common with "swastika" and "Amerika", both having negative connotations, however the dot-com domain was available. -Friendica was in fact the first choice but the 'friendica.com' domain name was already registered. It became available a -year later and the project was renamed to Friendica in late 2011.

          - -

          Soon after version 1 was released in July 2010 - providing basic social communications, the software also took on a -new role - cross-service federation; which was first introduced in August and September 2010. Federation allowed the -software to "behave as" a StatusNet site and friends and messages could communicate to the other service from their own -platforms. It was also hoped to provide federation with Diaspora - a project with similar scope being developed in -secret in New York and first released in November of that year. Over the course of the next year, the federation ability -was extended to provide integrated communications from RSS feeds, to and from email, StatusNet, Facebook, Twitter, and -the emerging Diaspora project. The software provided a single "view" of your entire social space no matter what provider -you or your friends used. StatusNet and Diaspora were supported natively so that one account could access any of these -services. Facebook and Twitter used "API federation" which required the person to have an account on those services with -which to link.

          - -

          By July 2012, Twitter and Facebook had both changed their terms of service and essentially outlawed "API federation" -in the way Friendica was using it. Diaspora announced they were changing their protocol and would not maintain -compatibility nor provide any warning when compatibility would break (or documentation on the proposed changes). The -creator of StatusNet was also leaving his project to create something new (pump.io). As the software's primary purpose -by this time was "federation of different social services into one interface", this created a bit of a crisis. The -federated social web was crumbling. Also of concern was that independent and decentralised social websites shut down -frequently, requiring all their members to start over again on another site. Often the effort involved to do this seemed -daunting - and many people ran back to the relative safety of the large corporate providers - Facebook, Twitter, and now -Google+.

          - -

          Mike realised he did not want to be held hostage to the decisions that other projects and companies and independent -websites make. Friendica could operate on its own without attaching to these other networks, but its vision and -implementation of a federated social world depended on federation with others for its project identity - so this created -an identity crisis.

          - -

          Mike had been working on this project for some time and there were a number of things which needed re-writing, -including the base communication protocol which Friendica used (DFRN or the "Distributed Friends and Relations Network" -protocol). These ideas were starting to emerge as a different method of communication he called "zot". Zot began as a -way to create a common language for federated websites, but there was no interest in this ability and as mentioned, the -federated web was crumbling. The first version was soon scrapped and zot was re-designed and re-ignited as a streamlined -communication protocol which was location-independent; e.g. not tied to any website. This would allow people to carry on -unaffected if their website operator shut down temporarily or permanently. They wouldn't have to make friends all over -again, and permissions of everything on the system wouldn't have to be changed to allow bob@site1 to see something that -was private to him, even though he was now bob@site2. This was a serious problem with decentralisation. People moved and -their online identities were lost and had to be re-created from scratch and existing relationships destroyed and had to -be created all over again.

          - -

          Redmatrix

          - -

          In July 2012, Mike left the Friendica project and began development of "zot" and a new base project called "red" in -his somewhat elusive spare time. Red is Spanish for "network". It wasn't really a "social network" and -especially not a "federated social network". It was just Red (technically "la red"), or "the network". Work began by -removing all the "federation" components and going back to basics - communication and remote authentication. It was a -major re-write and took roughly six months before even basic communication was re-established. It was also no longer -compatible with Friendica - which had been given to the "Friendica community" and by this time (December 2012) was -developing separately on its own track.

          - -

          It became clear during this time that the single most compelling feature of the project wasn't the social network at -all, but the authentication layer and decentralised access control mechanisms. Combined with zot's location independence -it created a new model for software which had never existed previously - decentralised identity-aware web publishing and -single sign-on to any compatible provider across the web. These weren't evolutionary, they were -revolutionary. One of the biggest flaws of the modern web is the reliance on different passwords for -every service you use, or reliance on a single provider if you were to tie them to - say your Facebook login. Facebook -can remove your account at any time. Gone. If you rely on their authentication for all your websites, your entire online -identity - now gone. This is also what was missing from Friendica - a compelling software feature which could stand on -its own, without requiring a social network and especially without requiring a federated social network with all the -mentioned external dependencies.

          - -

          An early visitor to the project noted that he had some difficulty finding the project on Google because of the choice -of name - "red". Yes, this was a poor decision in retrospect. We were buried on page 23,712 of the search results. The -concept that was emerging around this identity-aware publishing was that of "a matrix of inter-connected thought -streams", since we didn't have a concept of "people" and "friends". All were just connected "channels" with different -ways to connect. So "Redmatrix" was chosen to give it a searchable name. It had nothing to do with the Matrix film and -red and blue pills, though that is frequently cited (erronously); and in fact isn't a bad analogy.

          - -

          The concept of identity-aware content was alien to anything that existed previously on the web, so to make it useful -we had to provide the ability to use it for content. It needed content publishing tools. This brought back concepts from -the old "Content Management System" on which the software was originally based. To get it up and running quickly we -created a markup language for webpages called "Comanche" which let you describe a page in high-level terms based on -bbcode tags. We also added WebDAV so you could put decentralised access control on files and drag/drop from your -operating system. So now you could have private photos, webpages, files, events, conversations, chatrooms - and they are -visible to those you choose - no matter what site they use. All they need is zot. And your viewers could move to another -site or just pop up at a different site any time they want and we don't care. And it also had a -built-in social network; with lots of additional privacy and encryption features which were added even before the -Snowden revelations gave them added urgency.

          - -

          Over time a few federation components re-emerged. The ability to view RSS feeds was important to many people. -Diaspora never really managed to re-write their protocol, so that was re-implemented and allowed Redmatrix to connect -with Diaspora and Friendica again (Friendica still had their Diaspora protocol intact, so this was the most common -language now remaining on the free web - despite its faults). Diaspora communications aren't able to make use of the -advanced identity features, but they work for basic communications.

          - -

          Hubzilla

          - -

          The Redmatrix project reached a point of stagnation in early 2015 as network growth leveled and active interest in -the project declined. Mike met with several external high tech developers and innovators in a round of discussions that -were called "Zotopia" in early 2015 to perform an independent review of the project and try to identify what had gone -wrong and plan a route forward. The basic consensus is that the project suffered from bad marketing decisions which were -compounded by mixed messages about the project goals and target audience. A "rival" project (Diaspora) was marketing -itself as a Facebook competitor, but after some long discussions it was determined that Redmatrix wasn't a Facebook -competitor at all, and too much emphasis was being placed on the "social network" and "anti-Facebook" features. It was a -novel decentralisation platform with distributed identity and permissions, and as was pointed out, the "end user" was -the wrong target market. These marketing mistakes were now identified with the project name and random sampling of -various "customers" showed that none of them really had a clue about the software goals or target market segment. The -mixed messages were associated with the brand identity and this was a problem.

          - -

          The Redmatrix community held a vote and the project was renamed "Hubzilla", with a renewed identity and focus - to -provide software for creating and ultimately linking together unrelated community websites or "hubs" into a global -community. This is in fact what we were building all along, but didn't fully recognise it. The target audience for this -software as it turns out is not the members or end users, but software integrators and digital community architects and -builders. These in turn will be responsible for marketing their own product (their respective online communities) to -end-users or members. The software solves a real world need of linking isolated and "walled garden" community sites -together into a larger cooperative. The transition from Redmatrix to Hubzilla was complex and has taken several months -as we consolidated the marketing and media assets to deliver a consistent message. It is still ongoing at this time, and -should be completed in Q4 2015.

          - -

          Mike stepped down as active coordinator for the project in early 2015 and turned management over to the community. He -remains active as a Hubzilla developer.

          - -

          And Then...

          - -

          In 2016, the project was re-architected to support multiple server "roles". These correspond to sub-projects which -can be isolated from each other in terms of supported feature sets, but all use and support the same code-base and -developers are able to work together on common features and goals. The roles primarily differ in target audience, -project governance and decision making structures, and this results in slightly -different features and idealogy. They all share a common code repository.

          - -

          Those roles are:

          - -

          Basic

          - -

          Entry level server. Supported by and governed by the Hubzilla community. Most advanced or complex features have been -stripped away to ease federation with external services. It is best suited as a FOSS social network tool.

          - -

          Standard

          - -

          The standard Hubzilla server. This provides a wide range of useful features and is supported by and governed by the -Hubzilla community. It is best suited as an open source community and cloud server.

          - -

          Pro

          - -

          This is a specially crafted server with a unique feature set. It is supported by and governed by Mike Macgirvin dba -"Zotlabs". Federation with external services has been stripped away in order to support a wide range of more technically -advanced and complex features; and also includes features and modes which may not have the support or backing of the -Hubzilla open source community. It is best suited for business and workplace applications.

          - - -

          Governance

          -

          Governance relates to the management of a project and particularly how this relates to conflict -resolution.

          This project uses a dual-governance model.

          The project as a whole and the repository were -created initially by Mike Macgirvin; who controls the project copyright, and the project license, and manages the -project as a Self Appointed Benevolent Dictator for Life. He holds veto power over any project proposal or decision and -his word is final.

          That said, Mike has no interest in running the day to day activities of the project and -influencing its direction, other than to protect his own work from sabotage.

          The internal project structure -contains multiple "configurations" known as 'basic', 'standard', and 'pro'. Mike's veto power extends to any proposal or -decision which he feels might adversely affect the 'pro' configuration.

          The 'basic and 'standard' configurations -are controlled completely by the community. If the proposal or decision is crafted in such a way that its effects are -limited to these configurations, Mike will consider relinquishing his power of veto and convert it to a normal community -vote.

          Mario Vavti has done an incredible amount of work on the usability and theming of the project and holds -veto power over any proposal or decision which might impact usability and "look and feel"; and his decision is also -final.

          Mario's veto power is likewise restricted to anything using the standard project 'theme'. If a new theme -is created and an otherwise vetoed decision is implemented entirely in this different theme and has no impact on the -standard project theme, his veto may also be turned into a normal community vote.

          This ability -to work around a veto is at the discretion of Mike and Mario. They may choose to relinquish their veto -if the scope of the work is limited as described above, and in most circumstances they will leave the decision to the -community. They are not obligated to do so.

          Community Governance

          Beyond those two special cases, -the project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the -structure is finalised, decisions are made in the following order:


          • Lazy Consensus

            If a project proposal is made to one of the community -governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually -provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered -approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds -provided, it will still be considered approved.

          • Veto

            If a proposal is vetoed, it is not -necessarily the final word. See above on how to convert a veto into a normal community vote. This can be done by framing -the proposal so that it does not impact the 'pro' configuration or the standard theme.

          • Community -Vote

            A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a -community vote. At present this is a simple popular vote in one of the applicable community forums.  At this -time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance -model. This document will be updated at that time with the updated governance rules.

          Community -Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason -why other models are under consideration). If the proposal is 'down voted' there are still several things which can be -done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional -feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate -lots of bad feelings amongst the losing voters. On such close votes, it is strongly recommended that -the proposer take steps to address any concerns that were raised and re-submit.

          +

          Governance relates to the management of a project and particularly how this relates to conflict resolution.

          Community Governance



          The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order:

          • Lazy Consensus

            If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved.
          • Veto

            Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented.
          • Community Vote

            A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums.  At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules.


          Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is strongly recommended that the proposer take steps to address any concerns that were raised and re-submit. @@ -336,4 +97,94 @@ the proposer take steps to address any concerns that were raised and re-submit.<

          Zot protocol

          What is Zot?

          Zot is the protocol that powers Hubzilla, providing three core capabilities: Communications, Identity, and Access Control.

          The functionality it provides can also be described as follows:

          - a relationship online is just a bunch of permissions
          - the internet is just another folder

          Communications

          Zot is a revolutionary protocol which provides decentralised communications and identity management across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality.

          Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers.

          Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the Affinity Slider.

          You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of decentralized identity services.

          Identity

          Zot's identity layer is unique. It provides invisible single sign-on across all sites in the grid.

          It also provides nomadic identity, so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently.

          The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact.

          Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship.

          Nomadic identity, single sign-on, and Hubzilla's decentralization of hubs, we believe, introduce a high degree of degree of resiliency and persistence in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship.

          As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit.

          How does Zot do that? We call it magic-auth, because Hubzilla hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid.  This is one of the design goals of Hubzilla: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online.

          You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control.

          You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it.

          Access Control

          Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across Hubzilla. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create.

          Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control.

          This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid is your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers.

          Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it.

          Additional Resources and Links

          For more detailed, technical information about Zot, check out the following links:

          - A high level overview

          - Zot development specification

          - Zot reference implementation in PHP -

          \ No newline at end of file +

          + +

          Credits

          +

          +Thanks to all who have helped and contributed to the project and its predecessors over the years. +It is possible we missed in your name but this is unintentional. We also thank the community and +its members for providing valuable input and without whom this entire effort would be meaningless. +

          +

          +It is also worth acknowledging the contributions and solutions to problems which arose from +discussions amongst members and developers of other somewhat related and competing projects; +even if we have had our occasional disagreements. +

          +
            +
          • Mike Macgirvin
          • +
          • Fabio Comuni
          • +
          • Simon L'nu
          • +
          • marijus
          • +
          • Tobias Diekershoff
          • +
          • fabrixxm
          • +
          • tommy tomson
          • +
          • Simon
          • +
          • zottel
          • +
          • Christian Vogeley
          • +
          • Jeroen van Riet Paap (jeroenpraat)
          • +
          • Michael Vogel
          • +
          • erik
          • +
          • Zach Prezkuta
          • +
          • Paolo T
          • +
          • Michael Meer
          • +
          • Michael
          • +
          • Abinoam P. Marques Jr
          • +
          • Tobias Hößl
          • +
          • Alexander Kampmann
          • +
          • Olaf Conradi
          • +
          • Paolo Tacconi
          • +
          • tobiasd
          • +
          • Devlon Duthie
          • +
          • Zvi ben Yaakov (a.k.a rdc)
          • +
          • Alexandre Hannud Abdo
          • +
          • Olivier Migeot
          • +
          • Chris Case
          • +
          • Klaus Weidenbach
          • +
          • Michael Johnston
          • +
          • olivierm
          • +
          • Vasudev Kamath
          • +
          • pixelroot
          • +
          • Max Weller
          • +
          • duthied
          • +
          • Martin Schmitt
          • +
          • Sebastian Egbers
          • +
          • Erkan Yilmaz
          • +
          • sasiflo
          • +
          • Stefan Parviainen
          • +
          • Haakon Meland Eriksen
          • +
          • Oliver Hartmann (23n)
          • +
          • Erik Lundin
          • +
          • habeascodice
          • +
          • sirius
          • +
          • Charles
          • +
          • Tony Baldwin
          • +
          • Hauke Zuehl
          • +
          • Keith Fernie
          • +
          • Anne Walk
          • +
          • toclimb
          • +
          • Daniel Frank
          • +
          • Matthew Exon
          • +
          • Michal Supler
          • +
          • Tobias Luther
          • +
          • U-SOUND\mike
          • +
          • mrjive
          • +
          • nostupidzone
          • +
          • tonnerkiller
          • +
          • Antoine G
          • +
          • Christian Drechsler
          • +
          • Ludovic Grossard
          • +
          • RedmatrixCanada
          • +
          • Stanislav Lechev [0xAF]
          • +
          • aweiher
          • +
          • bufalo1973
          • +
          • dsp1986
          • +
          • felixgilles
          • +
          • ike
          • +
          • maase2
          • +
          • mycocham
          • +
          • ndurchx
          • +
          • pafcu
          • +
          • Simó Albert i Beltran
          • +
          • Manuel Reva
          • +
          • Manuel Jiménez Friaza
          • +
          \ No newline at end of file -- cgit v1.2.3 From dfaf1164496a7b2ca657f0862d34bab803c06516 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 30 Nov 2016 22:24:44 -0500 Subject: Add resources and links. Fix bug where table of contents was not generated if URL had a sectionspecified like /help/blah#anchor --- doc/about/about_hubzilla.html | 7 +++++++ doc/toc.html | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html index a6133bb86..8b0168cbb 100644 --- a/doc/about/about_hubzilla.html +++ b/doc/about/about_hubzilla.html @@ -5,6 +5,13 @@ Hubzilla is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.

          Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

          Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.

          How you use it depends on how you want to use it.

          It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

          In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

          Along the way, Hubzilla offers a number of unique goodies:

          Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

          Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

          Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss.

          + + +

          Governance



          Governance relates to the management of a project and particularly how this relates to conflict resolution.

          Community Governance



          The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order:

          • Lazy Consensus

            If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved.
          • Veto

            Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented.
          • Community Vote

            A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums.  At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules.


          Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is strongly recommended that the proposer take steps to address any concerns that were raised and re-submit. diff --git a/doc/toc.html b/doc/toc.html index e0200c1e1..047032437 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -408,7 +408,7 @@ window.console.log($(this).attr('href')); var url = document.createElement('a'); url.href = window.location; - var pageName = url.href.split('/').pop(); + var pageName = url.href.split('/').pop().split('#').shift(); window.console.log('pageName: ' + pageName); var linkName = $(this).attr('href').split('/').pop(); window.console.log('linkName: ' + linkName); -- cgit v1.2.3 From 6bcc039e0147c3440f51637f7a94e23231008112 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Fri, 2 Dec 2016 22:51:08 -0800 Subject: initial doco for the item/store api call --- doc/api_item_store.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 doc/api_item_store.md (limited to 'doc') diff --git a/doc/api_item_store.md b/doc/api_item_store.md new file mode 100644 index 000000000..c942e1149 --- /dev/null +++ b/doc/api_item_store.md @@ -0,0 +1,91 @@ +API item/store +============== + + +Description: item/store posts an item (typically a conversation item or post, but can be any item). + + +Required: + +- body + + text/bbcode contents by default. + + +Optional: + +- $_FILES['media'] + uploaded media file (currently photos) + +- title + title of post/item + +- coord + geographic coordinates + +- location + freefrom location + +- expire + datetime this post will expire or be removed + +- mimetype + mimetype if not text/bbcode + +- parent + item.id of parent to this post (makes it a comment) + +- parent_mid + alternate form of parent using message_id + +- remote_xchan + xchan.xchan_hash of this message author if not the channel owner + +- consensus + boolean set to true if this is a consensus or voting item (default false) + +- nocomment + boolean set to true if comments are to be disabled (default false) + +- origin + do not use this without reading the code + +- namespace + persistent identity for a remote network or service + +- remote_id + message_id of this resource on a remote network or service + +- message_id + message_id of this item (leave unset to generate one) + +- created + datetime of message creation + +- post_id + existing item.id if this is an edit operation + +- app + application or network name to display with item + +- categories + comma separated categories for this item + +- webpage + item.page_type if not 0 + +- pagetitle + for webpage and design elements, the 'page name' + +- layout_mid + item.mid of layout for this design element + +- plink + permalink for this item if different than the default + +- verb + activitystream verb for this item/activity + +- obj_type + activitystream object type for this item/activity + -- cgit v1.2.3 From 23acd2738b7eca2c8d28c467d5e2baec7a6e9a36 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Fri, 2 Dec 2016 22:53:56 -0800 Subject: edits --- doc/api_item_store.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/api_item_store.md b/doc/api_item_store.md index c942e1149..0748c266f 100644 --- a/doc/api_item_store.md +++ b/doc/api_item_store.md @@ -1,8 +1,9 @@ API item/store ============== +Usage: POST /api/z/1.0/item/store -Description: item/store posts an item (typically a conversation item or post, but can be any item). +Description: item/store posts an item (typically a conversation item or post, but can be any item) using form input. Required: -- cgit v1.2.3 From 8e6ff32c97fe6abbbc93e3d7d2769142c285b948 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Fri, 2 Dec 2016 23:09:25 -0800 Subject: more api work for item/store and doco --- doc/api_item_store.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/api_item_store.md b/doc/api_item_store.md index 0748c266f..26b6db121 100644 --- a/doc/api_item_store.md +++ b/doc/api_item_store.md @@ -16,11 +16,23 @@ Required: Optional: - $_FILES['media'] - uploaded media file (currently photos) + uploaded media file to include with post - title title of post/item +- contact_allow + array of xchan.xchan_hash allowed to view this item + +- group_allow + array of group.hash allowed to view this item + +- contact_deny + array of xchan.xchan_hash not allowed to view this item + +- group_deny + array of group.hash not allowed to view this item + - coord geographic coordinates -- cgit v1.2.3 From 53c950b235968665fc24548dc5194497bf274f42 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 3 Dec 2016 00:02:06 -0800 Subject: api xchan doc --- doc/api_xchan.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 doc/api_xchan.md (limited to 'doc') diff --git a/doc/api_xchan.md b/doc/api_xchan.md new file mode 100644 index 000000000..d2b15e04c --- /dev/null +++ b/doc/api_xchan.md @@ -0,0 +1,44 @@ +API xchan +========= + +An xchan is a global location independent channel and is the primary record for a network +identity. It may refer to channels on other websites, networks, or services. + +GET /api/z/1.0/xchan + +Required: one of [ address, hash, guid ] as GET parameters + +Returns a portable xchan structure + +Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com + +Returns: + + { + "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", + "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", + "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "photo_mimetype": "image/jpeg", + "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", + "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", + "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", + "address": "mike@macgirvin.com", + "url": "https://macgirvin.com/channel/mike", + "connurl": "https://macgirvin.com/poco/mike", + "follow": "https://macgirvin.com/follow?f=&url=%s", + "connpage": "https://macgirvin.com/connect/mike", + "name": "Mike Macgirvin", + "network": "zot", + "instance_url": "", + "flags": "0", + "photo_date": "2012-12-06 05:06:11", + "name_date": "2012-12-06 04:59:13", + "hidden": "1", + "orphan": "0", + "censored": "0", + "selfcensored": "0", + "system": "0", + "pubforum": "0", + "deleted": "0" + } \ No newline at end of file -- cgit v1.2.3 From f5f1b9602a381193205d7089516dfbcb2ed2f84b Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 3 Dec 2016 12:08:58 -0800 Subject: rename api endpoint yet again. item/store appears to be blacklisted in some hosting environments. --- doc/api_item_store.md | 104 ----------------------- doc/api_item_update.md | 225 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+), 104 deletions(-) delete mode 100644 doc/api_item_store.md create mode 100644 doc/api_item_update.md (limited to 'doc') diff --git a/doc/api_item_store.md b/doc/api_item_store.md deleted file mode 100644 index 26b6db121..000000000 --- a/doc/api_item_store.md +++ /dev/null @@ -1,104 +0,0 @@ -API item/store -============== - -Usage: POST /api/z/1.0/item/store - -Description: item/store posts an item (typically a conversation item or post, but can be any item) using form input. - - -Required: - -- body - - text/bbcode contents by default. - - -Optional: - -- $_FILES['media'] - uploaded media file to include with post - -- title - title of post/item - -- contact_allow - array of xchan.xchan_hash allowed to view this item - -- group_allow - array of group.hash allowed to view this item - -- contact_deny - array of xchan.xchan_hash not allowed to view this item - -- group_deny - array of group.hash not allowed to view this item - -- coord - geographic coordinates - -- location - freefrom location - -- expire - datetime this post will expire or be removed - -- mimetype - mimetype if not text/bbcode - -- parent - item.id of parent to this post (makes it a comment) - -- parent_mid - alternate form of parent using message_id - -- remote_xchan - xchan.xchan_hash of this message author if not the channel owner - -- consensus - boolean set to true if this is a consensus or voting item (default false) - -- nocomment - boolean set to true if comments are to be disabled (default false) - -- origin - do not use this without reading the code - -- namespace - persistent identity for a remote network or service - -- remote_id - message_id of this resource on a remote network or service - -- message_id - message_id of this item (leave unset to generate one) - -- created - datetime of message creation - -- post_id - existing item.id if this is an edit operation - -- app - application or network name to display with item - -- categories - comma separated categories for this item - -- webpage - item.page_type if not 0 - -- pagetitle - for webpage and design elements, the 'page name' - -- layout_mid - item.mid of layout for this design element - -- plink - permalink for this item if different than the default - -- verb - activitystream verb for this item/activity - -- obj_type - activitystream object type for this item/activity - diff --git a/doc/api_item_update.md b/doc/api_item_update.md new file mode 100644 index 000000000..598fd114a --- /dev/null +++ b/doc/api_item_update.md @@ -0,0 +1,225 @@ +API item/update +=============== + + +Usage: POST /api/z/1.0/item/update + +Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. + + +Required: + +- body + + text/bbcode contents by default. + + +Optional: + +- $_FILES['media'] + + uploaded media file to include with post + +- title + + title of post/item + +- contact_allow + + array of xchan.xchan_hash allowed to view this item + +- group_allow + + array of group.hash allowed to view this item + +- contact_deny + + array of xchan.xchan_hash not allowed to view this item + +- group_deny + + array of group.hash not allowed to view this item + +- coord + + geographic coordinates + +- location + + freefrom location + +- expire + + datetime this post will expire or be removed + +- mimetype + + mimetype if not text/bbcode + +- parent + + item.id of parent to this post (makes it a comment) + +- parent_mid + + alternate form of parent using message_id + +- remote_xchan + + xchan.xchan_hash of this message author if not the channel owner + +- consensus + + boolean set to true if this is a consensus or voting item (default false) + +- nocomment + + boolean set to true if comments are to be disabled (default false) + +- origin + + do not use this without reading the code + +- namespace + + persistent identity for a remote network or service + +- remote_id + + message_id of this resource on a remote network or service + +- message_id + + message_id of this item (leave unset to generate one) + +- created + + datetime of message creation + +- post_id + + existing item.id if this is an edit operation + +- app + + application or network name to display with item + +- categories + + comma separated categories for this item + +- webpage + + item.page_type if not 0 + +- pagetitle + + for webpage and design elements, the 'page name' + +- layout_mid + + item.mid of layout for this design element + +- plink + + permalink for this item if different than the default + +- verb + + activitystream verb for this item/activity + +- obj_type + + activitystream object type for this item/activity + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" + + +Returns: + + + { + + "success": true, + "item_id": "2245", + "item": { + "id": "2245", + "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "aid": "1", + "uid": "2", + "parent": "0", + "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "created": "2016-12-03 20:00:12", + "edited": "2016-12-03 20:00:12", + "expires": "0001-01-01 00:00:00", + "commented": "2016-12-03 20:00:12", + "received": "2016-12-03 20:00:12", + "changed": "2016-12-03 20:00:12", + "comments_closed": "0001-01-01 00:00:00", + "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "source_xchan": "", + "mimetype": "text/bbcode", + "title": "", + "body": "hello world", + "html": "", + "app": "", + "lang": "", + "revision": "0", + "verb": "http://activitystrea.ms/schema/1.0/post", + "obj_type": "http://activitystrea.ms/schema/1.0/note", + "obj": "", + "tgt_type": "", + "target": "", + "layout_mid": "", + "postopts": "", + "route": "", + "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "resource_id": "", + "resource_type": "", + "attach": "", + "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", + "diaspora_meta": "", + "location": "", + "coord": "", + "public_policy": "", + "comment_policy": "contacts", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "item_restrict": "0", + "item_flags": "0", + "item_private": "0", + "item_origin": "1", + "item_unseen": "0", + "item_starred": "0", + "item_uplink": "0", + "item_consensus": "0", + "item_wall": "1", + "item_thread_top": "1", + "item_notshown": "0", + "item_nsfw": "0", + "item_relay": "0", + "item_mentionsme": "0", + "item_nocomment": "0", + "item_obscured": "0", + "item_verified": "1", + "item_retained": "0", + "item_rss": "0", + "item_deleted": "0", + "item_type": "0", + "item_hidden": "0", + "item_unpublished": "0", + "item_delayed": "0", + "item_pending_remove": "0", + "item_blocked": "0" + } + + } \ No newline at end of file -- cgit v1.2.3 From 5bedf3618d0108a767d1cef32634c7be4942110f Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 3 Dec 2016 12:29:51 -0800 Subject: put all the api related stuff in the api folder --- doc/api/api_functions.bb | 133 +++++++++++++++++++++++++++ doc/api/api_item_update.md | 225 +++++++++++++++++++++++++++++++++++++++++++++ doc/api/api_posting.bb | 24 +++++ doc/api/api_xchan.md | 44 +++++++++ doc/api_functions.bb | 133 --------------------------- doc/api_item_update.md | 225 --------------------------------------------- doc/api_posting.bb | 24 ----- doc/api_xchan.md | 44 --------- 8 files changed, 426 insertions(+), 426 deletions(-) create mode 100644 doc/api/api_functions.bb create mode 100644 doc/api/api_item_update.md create mode 100644 doc/api/api_posting.bb create mode 100644 doc/api/api_xchan.md delete mode 100644 doc/api_functions.bb delete mode 100644 doc/api_item_update.md delete mode 100644 doc/api_posting.bb delete mode 100644 doc/api_xchan.md (limited to 'doc') diff --git a/doc/api/api_functions.bb b/doc/api/api_functions.bb new file mode 100644 index 000000000..e6cde3dc6 --- /dev/null +++ b/doc/api/api_functions.bb @@ -0,0 +1,133 @@ +[b]Red Twitter API[/b] + +The "basic" Red web API is based on the Twitter API, as this provides instant compatibility with a huge number of third-party clients and applications without requiring any code changes on their part. It is also a super-set of the StatusNet version of the Twitter API, as this also has existing wide support. + +Red has a lot more capability that isn't exposed in the Twitter interfaces or where we are forced to "dumb-down" the API functions to work with the primitive Twitter/StatusNet communications and privacy model. So we plan to extend the Twitter API in ways that will allow Red-specific clients to make full use of Red features without being crippled. + +A dedicated Red API is also being developed to work with native data structures and permissions and which do not require translating to different privacy and permission models and storage formats. This will be described in other documents. The prefix for all of the native endpoints is 'api/red'. + +Red provides multiple channels accesible via the same login account. With Red, any API function which requires authentication will accept a parameter &channel={channel_nickname} - and will select that channel and make it current before executing the API command. By default, the default channel associated with an account is selected. + +Red also provides an extended permission model. In the absence of any Red specific API calls to set permissions, they will be set to the default permissions settings which are associated with the current channel. + +Red will probably never be able to support the Twitter 'api/friendships' functions fully because Red is not a social network and has no concept of "friendships" - it only recognises permissions to do stuff (or not do stuff as the case may be). + +Legend: T= Twitter, S= StatusNet, F= Friendica, R= Red, ()=Not yet working, J= JSON only (XML formats deprecated) + +Twitter API compatible functions: + + api/account/verify_credentials T,S,F,R + api/statuses/update T,S,F,R + api/users/show T,S,F,R + api/statuses/home_timeline T,S,F,R + api/statuses/friends_timeline T,S,F,R + api/statuses/public_timeline T,S,F,R + api/statuses/show T,S,F,R + api/statuses/retweet T,S,F,R + api/statuses/destroy T,S,F,(R) + api/statuses/mentions T,S,F,(R) + api/statuses/replies T,S,F,(R) + api/statuses/user_timeline T,S,F,(R) + api/favorites T,S,F,R + api/account/rate_limit_status T,S,F,R + api/help/test T,S,F,R + api/statuses/friends T,S,F,R + api/statuses/followers T,S,F,R + api/friends/ids T,S,F,R + api/followers/ids T,S,F,R + api/direct_messages/new T,S,F,R + api/direct_messages/conversation T,S,F,R + api/direct_messages/all T,S,F,R + api/direct_messages/sent T,S,F,R + api/direct_messages T,S,F,R + api/oauth/request_token T,S,F,R + api/oauth/access_token T,S,F,R + api/favorites T,S,R + api/favorites/create T,S,R + api/favorites/destroy T,S,R + +Twitter API functions supported by StatusNet but not currently by Friendica or Red + + api/statuses/retweets_of_me T,S + api/friendships/create T,S + api/friendships/destroy T,S + api/friendships/exists T,S + api/friendships/show T,S + api/account/update_location T,S + api/account/update_profile_background_image T,S + api/account/update_profile_image T,S + api/blocks/create T,S + api/blocks/destroy T,S + +Twitter API functions not currently supported by StatusNet + + api/statuses/retweeted_to_me T + api/statuses/retweeted_by_me T + api/direct_messages/destroy T + api/account/end_session T,(R) + api/account/update_delivery_device T + api/notifications/follow T + api/notifications/leave T + api/blocks/exists T + api/blocks/blocking T + api/lists T + +Statusnet compatible extensions to the Twitter API supported in both Friendica and Red + + api/statusnet/version S,F,R + api/statusnet/config S,F,R + +Friendica API extensions to the Twitter API supported in both Friendica and Red + + api/statuses/mediap F,R + +Red specific API extensions to the Twitter API not supported in Friendica + + api/account/logout R + api/export/basic R,J + api/friendica/config R + api/red/config R + api/friendica/version R + + api/red/version R + + api/red/channel/export/basic R,J + api/red/channel/stream R,J (currently post only) + api/red/albums R,J + api/red/photos R,J (option album=xxxx) + +Red proposed API extensions to the Twitter API + + api/statuses/edit (R),J + api/statuses/permissions (R),J + api/statuses/permissions/update (R),J + api/statuses/ids (R),J # search for existing message_id before importing a foreign post + api/files/show (R),J + api/files/destroy (R),J + api/files/update (R),J + api/files/permissions (R),J + api/files/permissions/update (R),J + api/pages/show (R),J + api/pages/destroy (R),J + api/pages/update (R),J + api/pages/permissions (R),J + api/pages/permissions/update (R),J + api/events/show (R),J + api/events/update (R),J + api/events/permissions (R),J + api/events/permissions/update (R),J + api/events/destroy (R),J + api/photos/show (R),J + api/photos/update (R),J + api/photos/permissions (R),J + api/photos/permissions/update (R),J + api/albums/destroy (R),J + api/albums/show (R),J + api/albums/update (R),J + api/albums/permissions (R),J + api/albums/permissions/update (R),J + api/albums/destroy (R),J + api/friends/permissions (R),J + +#include doc/macros/main_footer.bb; + diff --git a/doc/api/api_item_update.md b/doc/api/api_item_update.md new file mode 100644 index 000000000..598fd114a --- /dev/null +++ b/doc/api/api_item_update.md @@ -0,0 +1,225 @@ +API item/update +=============== + + +Usage: POST /api/z/1.0/item/update + +Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. + + +Required: + +- body + + text/bbcode contents by default. + + +Optional: + +- $_FILES['media'] + + uploaded media file to include with post + +- title + + title of post/item + +- contact_allow + + array of xchan.xchan_hash allowed to view this item + +- group_allow + + array of group.hash allowed to view this item + +- contact_deny + + array of xchan.xchan_hash not allowed to view this item + +- group_deny + + array of group.hash not allowed to view this item + +- coord + + geographic coordinates + +- location + + freefrom location + +- expire + + datetime this post will expire or be removed + +- mimetype + + mimetype if not text/bbcode + +- parent + + item.id of parent to this post (makes it a comment) + +- parent_mid + + alternate form of parent using message_id + +- remote_xchan + + xchan.xchan_hash of this message author if not the channel owner + +- consensus + + boolean set to true if this is a consensus or voting item (default false) + +- nocomment + + boolean set to true if comments are to be disabled (default false) + +- origin + + do not use this without reading the code + +- namespace + + persistent identity for a remote network or service + +- remote_id + + message_id of this resource on a remote network or service + +- message_id + + message_id of this item (leave unset to generate one) + +- created + + datetime of message creation + +- post_id + + existing item.id if this is an edit operation + +- app + + application or network name to display with item + +- categories + + comma separated categories for this item + +- webpage + + item.page_type if not 0 + +- pagetitle + + for webpage and design elements, the 'page name' + +- layout_mid + + item.mid of layout for this design element + +- plink + + permalink for this item if different than the default + +- verb + + activitystream verb for this item/activity + +- obj_type + + activitystream object type for this item/activity + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" + + +Returns: + + + { + + "success": true, + "item_id": "2245", + "item": { + "id": "2245", + "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "aid": "1", + "uid": "2", + "parent": "0", + "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "created": "2016-12-03 20:00:12", + "edited": "2016-12-03 20:00:12", + "expires": "0001-01-01 00:00:00", + "commented": "2016-12-03 20:00:12", + "received": "2016-12-03 20:00:12", + "changed": "2016-12-03 20:00:12", + "comments_closed": "0001-01-01 00:00:00", + "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "source_xchan": "", + "mimetype": "text/bbcode", + "title": "", + "body": "hello world", + "html": "", + "app": "", + "lang": "", + "revision": "0", + "verb": "http://activitystrea.ms/schema/1.0/post", + "obj_type": "http://activitystrea.ms/schema/1.0/note", + "obj": "", + "tgt_type": "", + "target": "", + "layout_mid": "", + "postopts": "", + "route": "", + "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "resource_id": "", + "resource_type": "", + "attach": "", + "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", + "diaspora_meta": "", + "location": "", + "coord": "", + "public_policy": "", + "comment_policy": "contacts", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "item_restrict": "0", + "item_flags": "0", + "item_private": "0", + "item_origin": "1", + "item_unseen": "0", + "item_starred": "0", + "item_uplink": "0", + "item_consensus": "0", + "item_wall": "1", + "item_thread_top": "1", + "item_notshown": "0", + "item_nsfw": "0", + "item_relay": "0", + "item_mentionsme": "0", + "item_nocomment": "0", + "item_obscured": "0", + "item_verified": "1", + "item_retained": "0", + "item_rss": "0", + "item_deleted": "0", + "item_type": "0", + "item_hidden": "0", + "item_unpublished": "0", + "item_delayed": "0", + "item_pending_remove": "0", + "item_blocked": "0" + } + + } \ No newline at end of file diff --git a/doc/api/api_posting.bb b/doc/api/api_posting.bb new file mode 100644 index 000000000..c708ad143 --- /dev/null +++ b/doc/api/api_posting.bb @@ -0,0 +1,24 @@ +[b][size=xx-large]Posting to the Matrix via the API[/size][/b] + +The API allows you to post to the red# by HTTP POST request. Below you see an example using the command line tool cURL: + +[code]curl -ssl -u [color=blue]$E-Mail[/color]:[color=blue]$Password[/color] -d "[color=blue]$Parameters[/color]" [url][observer=1][observer.baseurl][/observer][observer=0]example.com[/observer]/api/statuses/update +[/url][/code] +[table][tr][td]$E-Mail:[/td][td]The E-Mail Address you use to login, or the channel nickname (without the hostname)[/td][/tr] +[tr][td]$Password:[/td][td]The Password you use to login[/td][/tr] +[tr][td]$Parameters:[/td][td]That's the interesting part, here you insert the content you want to send using the following parameters:[/td][/tr][/table] + +[ul] +[*]title: the title of the posting +[*]channel: the channel you want to post to (do not use this parameter with HTTP Basic auth) +[*]category: a comma-seperated list of categories for the posting +[*]status: the content of the posting, formatted with BBCode + OR +[*]htmlstatus:the content of the posting, formatted in HTML. +[/ul] + +To post to a specific channel, replace the email address with the channel nickname. If you supply the channel parameter, it has to match the "email", but is superfluous anyway. + +Instead of calling [observer=1][observer.baseurl][/observer][observer=0]example.com[/observer]/api/statuses/update which returns a json (you could also add .json on the end to clarify) output, you can use [observer.baseurl]/api/statuses/update.xml to get an xml formatted return. + +Instead of Basic HTTP Authentification you could also use oAuth. diff --git a/doc/api/api_xchan.md b/doc/api/api_xchan.md new file mode 100644 index 000000000..d2b15e04c --- /dev/null +++ b/doc/api/api_xchan.md @@ -0,0 +1,44 @@ +API xchan +========= + +An xchan is a global location independent channel and is the primary record for a network +identity. It may refer to channels on other websites, networks, or services. + +GET /api/z/1.0/xchan + +Required: one of [ address, hash, guid ] as GET parameters + +Returns a portable xchan structure + +Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com + +Returns: + + { + "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", + "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", + "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "photo_mimetype": "image/jpeg", + "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", + "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", + "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", + "address": "mike@macgirvin.com", + "url": "https://macgirvin.com/channel/mike", + "connurl": "https://macgirvin.com/poco/mike", + "follow": "https://macgirvin.com/follow?f=&url=%s", + "connpage": "https://macgirvin.com/connect/mike", + "name": "Mike Macgirvin", + "network": "zot", + "instance_url": "", + "flags": "0", + "photo_date": "2012-12-06 05:06:11", + "name_date": "2012-12-06 04:59:13", + "hidden": "1", + "orphan": "0", + "censored": "0", + "selfcensored": "0", + "system": "0", + "pubforum": "0", + "deleted": "0" + } \ No newline at end of file diff --git a/doc/api_functions.bb b/doc/api_functions.bb deleted file mode 100644 index e6cde3dc6..000000000 --- a/doc/api_functions.bb +++ /dev/null @@ -1,133 +0,0 @@ -[b]Red Twitter API[/b] - -The "basic" Red web API is based on the Twitter API, as this provides instant compatibility with a huge number of third-party clients and applications without requiring any code changes on their part. It is also a super-set of the StatusNet version of the Twitter API, as this also has existing wide support. - -Red has a lot more capability that isn't exposed in the Twitter interfaces or where we are forced to "dumb-down" the API functions to work with the primitive Twitter/StatusNet communications and privacy model. So we plan to extend the Twitter API in ways that will allow Red-specific clients to make full use of Red features without being crippled. - -A dedicated Red API is also being developed to work with native data structures and permissions and which do not require translating to different privacy and permission models and storage formats. This will be described in other documents. The prefix for all of the native endpoints is 'api/red'. - -Red provides multiple channels accesible via the same login account. With Red, any API function which requires authentication will accept a parameter &channel={channel_nickname} - and will select that channel and make it current before executing the API command. By default, the default channel associated with an account is selected. - -Red also provides an extended permission model. In the absence of any Red specific API calls to set permissions, they will be set to the default permissions settings which are associated with the current channel. - -Red will probably never be able to support the Twitter 'api/friendships' functions fully because Red is not a social network and has no concept of "friendships" - it only recognises permissions to do stuff (or not do stuff as the case may be). - -Legend: T= Twitter, S= StatusNet, F= Friendica, R= Red, ()=Not yet working, J= JSON only (XML formats deprecated) - -Twitter API compatible functions: - - api/account/verify_credentials T,S,F,R - api/statuses/update T,S,F,R - api/users/show T,S,F,R - api/statuses/home_timeline T,S,F,R - api/statuses/friends_timeline T,S,F,R - api/statuses/public_timeline T,S,F,R - api/statuses/show T,S,F,R - api/statuses/retweet T,S,F,R - api/statuses/destroy T,S,F,(R) - api/statuses/mentions T,S,F,(R) - api/statuses/replies T,S,F,(R) - api/statuses/user_timeline T,S,F,(R) - api/favorites T,S,F,R - api/account/rate_limit_status T,S,F,R - api/help/test T,S,F,R - api/statuses/friends T,S,F,R - api/statuses/followers T,S,F,R - api/friends/ids T,S,F,R - api/followers/ids T,S,F,R - api/direct_messages/new T,S,F,R - api/direct_messages/conversation T,S,F,R - api/direct_messages/all T,S,F,R - api/direct_messages/sent T,S,F,R - api/direct_messages T,S,F,R - api/oauth/request_token T,S,F,R - api/oauth/access_token T,S,F,R - api/favorites T,S,R - api/favorites/create T,S,R - api/favorites/destroy T,S,R - -Twitter API functions supported by StatusNet but not currently by Friendica or Red - - api/statuses/retweets_of_me T,S - api/friendships/create T,S - api/friendships/destroy T,S - api/friendships/exists T,S - api/friendships/show T,S - api/account/update_location T,S - api/account/update_profile_background_image T,S - api/account/update_profile_image T,S - api/blocks/create T,S - api/blocks/destroy T,S - -Twitter API functions not currently supported by StatusNet - - api/statuses/retweeted_to_me T - api/statuses/retweeted_by_me T - api/direct_messages/destroy T - api/account/end_session T,(R) - api/account/update_delivery_device T - api/notifications/follow T - api/notifications/leave T - api/blocks/exists T - api/blocks/blocking T - api/lists T - -Statusnet compatible extensions to the Twitter API supported in both Friendica and Red - - api/statusnet/version S,F,R - api/statusnet/config S,F,R - -Friendica API extensions to the Twitter API supported in both Friendica and Red - - api/statuses/mediap F,R - -Red specific API extensions to the Twitter API not supported in Friendica - - api/account/logout R - api/export/basic R,J - api/friendica/config R - api/red/config R - api/friendica/version R - - api/red/version R - - api/red/channel/export/basic R,J - api/red/channel/stream R,J (currently post only) - api/red/albums R,J - api/red/photos R,J (option album=xxxx) - -Red proposed API extensions to the Twitter API - - api/statuses/edit (R),J - api/statuses/permissions (R),J - api/statuses/permissions/update (R),J - api/statuses/ids (R),J # search for existing message_id before importing a foreign post - api/files/show (R),J - api/files/destroy (R),J - api/files/update (R),J - api/files/permissions (R),J - api/files/permissions/update (R),J - api/pages/show (R),J - api/pages/destroy (R),J - api/pages/update (R),J - api/pages/permissions (R),J - api/pages/permissions/update (R),J - api/events/show (R),J - api/events/update (R),J - api/events/permissions (R),J - api/events/permissions/update (R),J - api/events/destroy (R),J - api/photos/show (R),J - api/photos/update (R),J - api/photos/permissions (R),J - api/photos/permissions/update (R),J - api/albums/destroy (R),J - api/albums/show (R),J - api/albums/update (R),J - api/albums/permissions (R),J - api/albums/permissions/update (R),J - api/albums/destroy (R),J - api/friends/permissions (R),J - -#include doc/macros/main_footer.bb; - diff --git a/doc/api_item_update.md b/doc/api_item_update.md deleted file mode 100644 index 598fd114a..000000000 --- a/doc/api_item_update.md +++ /dev/null @@ -1,225 +0,0 @@ -API item/update -=============== - - -Usage: POST /api/z/1.0/item/update - -Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. - - -Required: - -- body - - text/bbcode contents by default. - - -Optional: - -- $_FILES['media'] - - uploaded media file to include with post - -- title - - title of post/item - -- contact_allow - - array of xchan.xchan_hash allowed to view this item - -- group_allow - - array of group.hash allowed to view this item - -- contact_deny - - array of xchan.xchan_hash not allowed to view this item - -- group_deny - - array of group.hash not allowed to view this item - -- coord - - geographic coordinates - -- location - - freefrom location - -- expire - - datetime this post will expire or be removed - -- mimetype - - mimetype if not text/bbcode - -- parent - - item.id of parent to this post (makes it a comment) - -- parent_mid - - alternate form of parent using message_id - -- remote_xchan - - xchan.xchan_hash of this message author if not the channel owner - -- consensus - - boolean set to true if this is a consensus or voting item (default false) - -- nocomment - - boolean set to true if comments are to be disabled (default false) - -- origin - - do not use this without reading the code - -- namespace - - persistent identity for a remote network or service - -- remote_id - - message_id of this resource on a remote network or service - -- message_id - - message_id of this item (leave unset to generate one) - -- created - - datetime of message creation - -- post_id - - existing item.id if this is an edit operation - -- app - - application or network name to display with item - -- categories - - comma separated categories for this item - -- webpage - - item.page_type if not 0 - -- pagetitle - - for webpage and design elements, the 'page name' - -- layout_mid - - item.mid of layout for this design element - -- plink - - permalink for this item if different than the default - -- verb - - activitystream verb for this item/activity - -- obj_type - - activitystream object type for this item/activity - - - -Example: - -curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" - - -Returns: - - - { - - "success": true, - "item_id": "2245", - "item": { - "id": "2245", - "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "aid": "1", - "uid": "2", - "parent": "0", - "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "created": "2016-12-03 20:00:12", - "edited": "2016-12-03 20:00:12", - "expires": "0001-01-01 00:00:00", - "commented": "2016-12-03 20:00:12", - "received": "2016-12-03 20:00:12", - "changed": "2016-12-03 20:00:12", - "comments_closed": "0001-01-01 00:00:00", - "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", - "source_xchan": "", - "mimetype": "text/bbcode", - "title": "", - "body": "hello world", - "html": "", - "app": "", - "lang": "", - "revision": "0", - "verb": "http://activitystrea.ms/schema/1.0/post", - "obj_type": "http://activitystrea.ms/schema/1.0/note", - "obj": "", - "tgt_type": "", - "target": "", - "layout_mid": "", - "postopts": "", - "route": "", - "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", - "resource_id": "", - "resource_type": "", - "attach": "", - "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", - "diaspora_meta": "", - "location": "", - "coord": "", - "public_policy": "", - "comment_policy": "contacts", - "allow_cid": "", - "allow_gid": "", - "deny_cid": "", - "deny_gid": "", - "item_restrict": "0", - "item_flags": "0", - "item_private": "0", - "item_origin": "1", - "item_unseen": "0", - "item_starred": "0", - "item_uplink": "0", - "item_consensus": "0", - "item_wall": "1", - "item_thread_top": "1", - "item_notshown": "0", - "item_nsfw": "0", - "item_relay": "0", - "item_mentionsme": "0", - "item_nocomment": "0", - "item_obscured": "0", - "item_verified": "1", - "item_retained": "0", - "item_rss": "0", - "item_deleted": "0", - "item_type": "0", - "item_hidden": "0", - "item_unpublished": "0", - "item_delayed": "0", - "item_pending_remove": "0", - "item_blocked": "0" - } - - } \ No newline at end of file diff --git a/doc/api_posting.bb b/doc/api_posting.bb deleted file mode 100644 index c708ad143..000000000 --- a/doc/api_posting.bb +++ /dev/null @@ -1,24 +0,0 @@ -[b][size=xx-large]Posting to the Matrix via the API[/size][/b] - -The API allows you to post to the red# by HTTP POST request. Below you see an example using the command line tool cURL: - -[code]curl -ssl -u [color=blue]$E-Mail[/color]:[color=blue]$Password[/color] -d "[color=blue]$Parameters[/color]" [url][observer=1][observer.baseurl][/observer][observer=0]example.com[/observer]/api/statuses/update -[/url][/code] -[table][tr][td]$E-Mail:[/td][td]The E-Mail Address you use to login, or the channel nickname (without the hostname)[/td][/tr] -[tr][td]$Password:[/td][td]The Password you use to login[/td][/tr] -[tr][td]$Parameters:[/td][td]That's the interesting part, here you insert the content you want to send using the following parameters:[/td][/tr][/table] - -[ul] -[*]title: the title of the posting -[*]channel: the channel you want to post to (do not use this parameter with HTTP Basic auth) -[*]category: a comma-seperated list of categories for the posting -[*]status: the content of the posting, formatted with BBCode - OR -[*]htmlstatus:the content of the posting, formatted in HTML. -[/ul] - -To post to a specific channel, replace the email address with the channel nickname. If you supply the channel parameter, it has to match the "email", but is superfluous anyway. - -Instead of calling [observer=1][observer.baseurl][/observer][observer=0]example.com[/observer]/api/statuses/update which returns a json (you could also add .json on the end to clarify) output, you can use [observer.baseurl]/api/statuses/update.xml to get an xml formatted return. - -Instead of Basic HTTP Authentification you could also use oAuth. diff --git a/doc/api_xchan.md b/doc/api_xchan.md deleted file mode 100644 index d2b15e04c..000000000 --- a/doc/api_xchan.md +++ /dev/null @@ -1,44 +0,0 @@ -API xchan -========= - -An xchan is a global location independent channel and is the primary record for a network -identity. It may refer to channels on other websites, networks, or services. - -GET /api/z/1.0/xchan - -Required: one of [ address, hash, guid ] as GET parameters - -Returns a portable xchan structure - -Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com - -Returns: - - { - "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", - "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", - "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", - "photo_mimetype": "image/jpeg", - "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", - "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", - "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", - "address": "mike@macgirvin.com", - "url": "https://macgirvin.com/channel/mike", - "connurl": "https://macgirvin.com/poco/mike", - "follow": "https://macgirvin.com/follow?f=&url=%s", - "connpage": "https://macgirvin.com/connect/mike", - "name": "Mike Macgirvin", - "network": "zot", - "instance_url": "", - "flags": "0", - "photo_date": "2012-12-06 05:06:11", - "name_date": "2012-12-06 04:59:13", - "hidden": "1", - "orphan": "0", - "censored": "0", - "selfcensored": "0", - "system": "0", - "pubforum": "0", - "deleted": "0" - } \ No newline at end of file -- cgit v1.2.3 From 1a103662e94e0ff51e1f104f5801c78161a4c840 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 3 Dec 2016 13:17:30 -0800 Subject: correct the doco --- doc/api/api_item_update.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'doc') diff --git a/doc/api/api_item_update.md b/doc/api/api_item_update.md index 598fd114a..cf1a28044 100644 --- a/doc/api/api_item_update.md +++ b/doc/api/api_item_update.md @@ -151,8 +151,8 @@ Returns: "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", "aid": "1", "uid": "2", - "parent": "0", - "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "parent": "2245", + "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", "created": "2016-12-03 20:00:12", "edited": "2016-12-03 20:00:12", -- cgit v1.2.3 From bd4bdab81ce6b6d2cd8f602677e5cbb299c0c6b0 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sun, 4 Dec 2016 02:53:17 -0800 Subject: more zot api documentation --- doc/api/api_group_members.md | 16 +++++++++ doc/api/group.md | 12 +++++++ doc/api_zot.md | 80 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 doc/api/api_group_members.md create mode 100644 doc/api/group.md create mode 100644 doc/api_zot.md (limited to 'doc') diff --git a/doc/api/api_group_members.md b/doc/api/api_group_members.md new file mode 100644 index 000000000..f4bcfa4e3 --- /dev/null +++ b/doc/api/api_group_members.md @@ -0,0 +1,16 @@ +API group_members +================= + +GET /api/z/1.0/group_members + + + +Required: + + group_id or group_name + + +Returns: + + abook+xchan (DB join) for each member of the privacy group + diff --git a/doc/api/group.md b/doc/api/group.md new file mode 100644 index 000000000..76df1c8e6 --- /dev/null +++ b/doc/api/group.md @@ -0,0 +1,12 @@ +API group +========= + +GET /api/z/1.0/group + + +Description: list privacy groups + + +Returns: DB tables of all privacy groups. To use with API group_members, provide group_id from the id element returned in this call, or group_name from the gname returned in this call. + + \ No newline at end of file diff --git a/doc/api_zot.md b/doc/api_zot.md new file mode 100644 index 000000000..3ba536550 --- /dev/null +++ b/doc/api_zot.md @@ -0,0 +1,80 @@ +Zot API +======= + + + +api/z/1.0/channel/export/basic + + Export channel data + + + +api/z/1.0/channel/stream + + Fetch conversation items + + +api/z/1.0/files + + List file storage + +api/z/1.0/filemeta + + Export file metadata for any uploaded file + + +api/z/1.0/filedata + + Export file contents for any uploaded file + + +api/z/1.0/file/export + +api/z/1.0/file + +api/z/1.0/albums + + List photo albums + + +api/z/1.0/photos + + list photo metadata + + +api/z/1.0/photo + + +[api/z/1.0/group](help/api/group) + + List privacy groups + +[api/z/1.0/group_members](help/api/group_members) + + List members of a privacy group + + +[api/z/1.0/xchan](help/api/api_xchan) + + Global extended channel (identity) information + +[api/z/1.0/item/update](help/api/api_item_update) + + Create or update an item (post, activity, webpage, etc.) + + +api/z/1.0/item/full + + Get all data associated with an item + +api/z/1.0/abook + + Connections + +api/z/1.0/abconfig + + Connection metadata (such as permissions) + +api/z/1.0/perm_allowed + + Check a permission for a given xchan -- cgit v1.2.3 From 1f91c2fe1203f6f34a639700e8d9731f51ba1429 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Sun, 4 Dec 2016 08:07:58 -0500 Subject: Remove borders and box-shadow with CSS without removing the classes from help.tpl. --- doc/toc.html | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 047032437..e240b5597 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -36,6 +36,27 @@ border-left: #cccccc 2px solid; margin-left: 10px; } + + #help-content.generic-content-wrapper { + border: 0; + box-shadow: 0; + border-radius: 0; + box-shadow: none; + } + #help-content.section-title-wrapper { + padding: 7px 10px; + background-color: $item_colour; + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom: 0; + } + #help-content.section-content-wrapper { + padding: 7px 10px; + background-color: $comment_item_colour; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + word-wrap: normal; + }
          @@ -421,7 +442,7 @@ } }); - //$('#accordion').sticky({topSpacing:$('nav').outerHeight(true)}); + //$("#help-content").find('.section-title-wrapper h2').html($('head title').html()); }); -- cgit v1.2.3 From 6346c005278d83df3b6b6ae0880ee48f4b5c936e Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sun, 4 Dec 2016 11:42:40 -0800 Subject: bugfix for api group_members --- doc/api/api_group_members.md | 119 ++++++++++++++++++++++++++++++++++++++++++- doc/api/group.md | 33 +++++++++++- 2 files changed, 149 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/doc/api/api_group_members.md b/doc/api/api_group_members.md index f4bcfa4e3..497e0aac6 100644 --- a/doc/api/api_group_members.md +++ b/doc/api/api_group_members.md @@ -12,5 +12,122 @@ Required: Returns: - abook+xchan (DB join) for each member of the privacy group + group_member+abook+xchan (DB join) for each member of the privacy group + + [ + + { + "id": "1", + "uid": "2", + "gid": "1", + "xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_id": "2", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_my_perms": "218555", + "abook_their_perms": "0", + "abook_closeness": "0", + "abook_created": "2016-01-02 21:16:26", + "abook_updated": "2016-01-02 21:16:26", + "abook_connected": "0000-00-00 00:00:00", + "abook_dob": "0000-00-00 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "1", + "abook_feed": "0", + "abook_profile": "", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw", + "xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2", + "xchan_addr": "teller@xyz.macgirvin.com", + "xchan_url": "https://xyz.macgirvin.com/channel/teller", + "xchan_connurl": "https://xyz.macgirvin.com/poco/teller", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Teller", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-10-19 01:26:50", + "xchan_name_date": "2016-01-02 21:16:26", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + }, + { + "id": "12", + "uid": "2", + "gid": "1", + "xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_id": "24", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_my_perms": "218555", + "abook_their_perms": "218555", + "abook_closeness": "80", + "abook_created": "2016-01-27 00:48:43", + "abook_updated": "2016-12-04 17:16:58", + "abook_connected": "2016-12-04 17:16:58", + "abook_dob": "0001-01-01 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "0", + "abook_feed": "0", + "abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA", + "xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6", + "xchan_addr": "cloner@xyz.macgirvin.com", + "xchan_url": "http://abc.macgirvin.com/channel/cloner", + "xchan_connurl": "http://abc.macgirvin.com/poco/cloner", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Karen", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-03-31 19:59:20", + "xchan_name_date": "2016-01-26 23:23:42", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + } + + ] \ No newline at end of file diff --git a/doc/api/group.md b/doc/api/group.md index 76df1c8e6..8829ff416 100644 --- a/doc/api/group.md +++ b/doc/api/group.md @@ -7,6 +7,35 @@ GET /api/z/1.0/group Description: list privacy groups -Returns: DB tables of all privacy groups. To use with API group_members, provide group_id from the id element returned in this call, or group_name from the gname returned in this call. +Returns: DB tables of all privacy groups. - \ No newline at end of file +To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call. + + + [ + + { + "id": "1", + "hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Friends" + }, + { + "id": "2", + "hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family", + "uid": "2", + "visible": "1", + "deleted": "0", + "gname": "Family" + }, + { + "id": "3", + "hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Co-workers" + } + ] \ No newline at end of file -- cgit v1.2.3 From df23ef36c75da646886809622134e14b5f7207ab Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sun, 4 Dec 2016 17:06:52 -0800 Subject: api_zot: implement /api/z/1.0/network/stream and fix /api/z/1.0/channel/stream --- doc/api_zot.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/api_zot.md b/doc/api_zot.md index 3ba536550..292539267 100644 --- a/doc/api_zot.md +++ b/doc/api_zot.md @@ -11,7 +11,11 @@ api/z/1.0/channel/export/basic api/z/1.0/channel/stream - Fetch conversation items + Fetch channel conversation items + +api/z/1.0/network/stream + + Fetch network conversation items api/z/1.0/files -- cgit v1.2.3 From c09ee7d714ccb79731ee59f9766a45e0bc90eec3 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Tue, 6 Dec 2016 17:15:20 -0500 Subject: Remove local CSS that overrides the redbasic theme. --- doc/toc.html | 20 -------------------- 1 file changed, 20 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index e240b5597..8aceaa17d 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -37,26 +37,6 @@ margin-left: 10px; } - #help-content.generic-content-wrapper { - border: 0; - box-shadow: 0; - border-radius: 0; - box-shadow: none; - } - #help-content.section-title-wrapper { - padding: 7px 10px; - background-color: $item_colour; - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom: 0; - } - #help-content.section-content-wrapper { - padding: 7px 10px; - background-color: $comment_item_colour; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - word-wrap: normal; - }
          -- cgit v1.2.3 From ae97afd806656467b8704ecffda73dceffa98be0 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Tue, 6 Dec 2016 17:19:27 -0500 Subject: Prepare for dev pull request --- doc/toc.html | 2 -- 1 file changed, 2 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 8aceaa17d..c9c5ec46d 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -36,7 +36,6 @@ border-left: #cccccc 2px solid; margin-left: 10px; } -
          @@ -422,7 +421,6 @@ } }); - //$("#help-content").find('.section-title-wrapper h2').html($('head title').html()); }); -- cgit v1.2.3 From 641e9ff50811a993a2486f8b1c37e3235c64da1f Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 6 Dec 2016 20:34:23 -0800 Subject: api files improvements/fixes and documentation --- doc/api/api_files.md | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 doc/api/api_files.md (limited to 'doc') diff --git a/doc/api/api_files.md b/doc/api/api_files.md new file mode 100644 index 000000000..c2a10fce5 --- /dev/null +++ b/doc/api/api_files.md @@ -0,0 +1,103 @@ +API files +========= + +List file storage (attach DB) + +GET /api/z/1.0/files + + +Options: + + - hash + return only entries matching hash (exactly) + + - filename + return only entries matching filename (substring) + + - filetype + return only entries matching filetype/mimetype (substring) + + - start + start at record (default 0) + + - records + number of records to return or 0 for unlimited + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/files -d filetype=multipart/mixed + + +Returns: + + { + + "success": true, + "results": [ + { + "id": "1", + "aid": "1", + "uid": "2", + "hash": "44ee8b2a1a7f36dea07b93b7747a2383a1bc0fdd08339e8928bfcbe45f65d939", + "filename": "Profile Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-02 21:51:17", + "edited": "2016-01-02 21:51:17", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "12", + "aid": "1", + "uid": "2", + "hash": "71883f1fc64af33889229cbc79c5a056deeec5fc277d765f182f19073e1b2998", + "filename": "Cover Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-15 00:24:33", + "edited": "2016-01-15 00:24:33", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "16", + "aid": "1", + "uid": "2", + "hash": "f48f7ec3278499d1dd86b72c3207beaaf4717b07df5cc9b373f14d7aad2e1bcd", + "filename": "2016-01", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-22 03:24:55", + "edited": "2016-01-22 03:26:57", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + } + ] + } -- cgit v1.2.3 From bccf371aa970776e04617760f994f86695bff56a Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 6 Dec 2016 20:36:14 -0800 Subject: link from index --- doc/api_zot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/api_zot.md b/doc/api_zot.md index 292539267..f15736a48 100644 --- a/doc/api_zot.md +++ b/doc/api_zot.md @@ -18,7 +18,7 @@ api/z/1.0/network/stream Fetch network conversation items -api/z/1.0/files +[api/z/1.0/files](help/api/api_files) List file storage -- cgit v1.2.3 From 77db84b4c8d980a24a3ad570ab5ddb573384488c Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 7 Dec 2016 11:44:35 -0800 Subject: doc updates --- doc/about/about_hubzilla.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html index 8b0168cbb..faa59fcf2 100644 --- a/doc/about/about_hubzilla.html +++ b/doc/about/about_hubzilla.html @@ -2,7 +2,7 @@

          Hubzilla Project

          - Hubzilla is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web.

          Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

          Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers.

          How you use it depends on how you want to use it.

          It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

          In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

          Along the way, Hubzilla offers a number of unique goodies:

          Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

          Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

          Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss. + Hubzilla is a decentralized community server providing communications, identity, and access control services which work together seamlessly across domains and connected websites. It allows anybody to publicly or privately publish a range of web/media/personal content. The cross-domain privacy implementation is unique and somewhat revolutionary, as identity and access rights are negotiated by servers invisibly in the background.

          Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

          Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday people, as well as by systems administrators and developers.

          How you use it depends on how you want to use it.

          It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

          In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

          Along the way, Hubzilla offers a number of unique goodies:

          Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

          Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

          Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss.

          @@ -76,11 +76,11 @@
          • You can enable Do Not Track (DNT) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of Hubzilla. This setting is probably enough for most people.
          • -
          +
          -

          *You can disable publication of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.

          +
        • You can disable publication of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.
        • +
          -
          • You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set.
          @@ -98,7 +98,7 @@

          Features

          - Hubzilla in a Nutshell

          TL;DR

          Hubzilla provides distributed web publishing and social communications with decentralised permissions.

          So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily everybody on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.

          Hubzilla combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.

          Hubzilla is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.

          Hubzilla Features


          Hubzilla is a general-purpose web publishing and communication network, with several unique features.  It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.

          This page lists some of the core features of Hubzilla that are bundled with the official release.  As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.

          Built for Privacy and Freedom

          One of the design goals of Hubzilla is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, Hubzilla includes a number of features allowing arbitrary levels of privacy:

          Affinity Slider

          When adding connnections in Hubzilla, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection.  For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".

          On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".

          At this point, Hubzilla Affinity Slider tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.

          The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.

          Connection Filtering

          You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.  

          Access Control Lists

          When sharing content, members have the option of restricting who sees the content.  By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.

          Once sent, the message will be viewable only by the sender and the selected recipients.  In other words, the message will not appear on any public walls.

          Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.

          Single Sign-on

          Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other Hubzilla sites and used to control access to private resources. You login once to your home hub. After that, authentication to all Hubzilla resources is "magic".


          WebDAV enabled File Storage

          Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of Hubzilla members (including some third party network members) or make them public.

          Photo Albums

          Store photos in albums. All your photos may be protected by Access Control Lists.

          Events Calendar

          Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.

          Chatrooms

          You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.      

          Webpage Building

          Hubzilla has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.

          Apps

          Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in Hubzilla are free and can be created easily by those with no programming skills.

          Layout

          Page layout is based on a description language called Comanche. Hubzilla is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".

          Bookmarks

          Share and save/manage bookmarks from links provided in conversations.    


          Private Message Encryption and Privacy Concerns

          Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.  

          Each Hubzilla channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.

          Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by Hubzilla operators or ISPs or anybody who does not know the passcode.

          Public messages are generally not encrypted in transit or in storage.  

          Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.

          Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.  


          Service Federation

          In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as Hubzilla and may present privacy risks.

          There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your Hubzilla hub may be used as an OpenID provider to authenticate you to external services which use this technology.

          Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.

          Privacy Groups

          Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).  


          Directory Services

          We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal Hubzilla sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).  


          TLS/SSL

          For Hubzilla hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL.  Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.

          Channel Settings

          When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.  

          If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication.  For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.  

          The options are:

          - Nobody except yourself.
          - Only those you specifically allow.
          - Anybody in your address book.
          - Anybody on this website.
          - Anybody in this network.
          - Anybody authenticated.
          - Specific people you provide a Guest Access Token to in order to access a specific item.
          - Anybody on the Internet.


          Public and Private Forums

          Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.


          Account Cloning

          Accounts in Hubzilla are referred to as nomadic identities, because a member's identity is not bound to the hub where the identity was originally created.  For example, when you create a Facebook or Gmail account, it is tied to those services.  They cannot function without Facebook.com or Gmail.com.  

          By contrast, say you've created a Hubzilla identity called tina@Hubzillahub.com.  You can clone it to another Hubzilla hub by choosing the same, or a different name: liveForever@SomeHubzillaHub.info

          Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone.  It doesn't matter whether you send a post from your original hub, or the new hub.  Posts will be mirrored on both accounts.

          This is a rather revolutionary feature, if we consider some scenarios:

          - What happens if the hub where an identity is based suddenly goes offline?  Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale").  With cloning, you just log into your cloned account, and life goes on happily ever after.

          - The administrator of your hub can no longer afford to pay for his free and public Hubzilla hub. He announces that the hub will be shutting down in two weeks.  This gives you ample time to clone your identity(ies) and preserve yourHubzilla relationships, friends and content.

          - What if your identity is subject to government censorship?  Your hub provider may be compelled to delete your account, along with any identities and associated data.  With cloning, Hubzilla offers censorship resistance.  You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.  

          Hubzilla offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.

          Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.

          Multiple Profiles

          Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.

          Account Backup

          Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s).  

          Backups can then be used to clone or restore a profile.

          Account Deletion

          Accounts can be immediately deleted by clicking on a link. That's it.  All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.

          Content Creation

          Writing Posts

          Hubzilla supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in Hubzilla. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for Hubzilla had some serious issues and has since been removed. We are currently looking for a replacement.

          When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.

          Deletion of content
          Any content created in Hubzilla remains under the control of the member (or channel) that originally created it.  At any time, a member can delete a message, or a range of messages.  The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot (Hubzilla communication and authentication protocol).

          Media
          Similar to any other modern blogging system, social network, or a micro-blogging service, Hubzilla supports the uploading of files, embedding of videos, linking web pages.

          Previewing/Editing
          Post can be previewed prior to sending and edited after sending.

          Voting/Consensus
          Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.


          Extending Hubzilla

          Hubzilla can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.

          API

          An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to Hubzilla. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. + Hubzilla in a Nutshell

          TL;DR

          Hubzilla provides distributed web publishing and social communications with decentralised permissions.

          So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily everybody on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.

          Hubzilla combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.

          Hubzilla is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.

          Hubzilla Features


          Hubzilla is a general-purpose web publishing and communication network, with several unique features.  It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.

          This page lists some of the core features of Hubzilla that are bundled with the official release.  As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.

          Built for Privacy and Freedom

          One of the design goals of Hubzilla is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, Hubzilla includes a number of features allowing arbitrary levels of privacy:

          Affinity Slider

          When adding connnections in Hubzilla, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection.  For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".

          On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".

          At this point, Hubzilla Affinity Slider tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.

          The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.

          Connection Filtering

          You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.  

          Access Control Lists

          When sharing content, members have the option of restricting who sees the content.  By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.

          Once sent, the message will be viewable only by the sender and the selected recipients.  In other words, the message will not appear on any public walls.

          Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.

          Single Sign-on

          Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other Hubzilla sites and used to control access to private resources. You login once to your home hub. After that, authentication to all Hubzilla resources is "magic".


          WebDAV enabled File Storage

          Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of Hubzilla members (including some third party network members) or make them public.

          Photo Albums

          Store photos in albums. All your photos may be protected by Access Control Lists.

          Events Calendar

          Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.

          Chatrooms

          You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.      

          Webpage Building

          Hubzilla has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.

          Apps

          Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in Hubzilla are free and can be created easily by those with no programming skills.

          Layout

          Page layout is based on a description language called Comanche. Hubzilla is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".

          Bookmarks

          Share and save/manage bookmarks from links provided in conversations.    


          Private Message Encryption and Privacy Concerns

          Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.  

          Each Hubzilla channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.

          Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by Hubzilla operators or ISPs or anybody who does not know the passcode.

          Public messages are generally not encrypted in transit or in storage.  

          Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.

          Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.  


          Service Federation

          In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as Hubzilla and may present privacy risks.

          There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your Hubzilla hub may be used as an OpenID provider to authenticate you to external services which use this technology.

          Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.

          Privacy Groups

          Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).  


          Directory Services

          We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal Hubzilla sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).  


          TLS/SSL

          For Hubzilla hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL.  Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.

          Channel Settings

          When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.  

          If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication.  For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.  

          The options are:

          - Nobody except yourself.
          - Only those you specifically allow.
          - Anybody in your address book.
          - Anybody on this website.
          - Anybody in this network.
          - Anybody authenticated.
          - Specific people you provide a Guest Access Token to in order to access a specific item.
          - Anybody on the Internet.


          Public and Private Forums

          Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.


          Account Cloning

          Accounts in Hubzilla are referred to as nomadic identities, because a member's identity is not bound to the hub where the identity was originally created.  For example, when you create a Facebook or Gmail account, it is tied to those services.  They cannot function without Facebook.com or Gmail.com.  

          By contrast, say you've created a Hubzilla identity called tina@Hubzillahub.com.  You can clone it to another Hubzilla hub by choosing the same, or a different name: liveForever@SomeHubzillaHub.info

          Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone.  It doesn't matter whether you send a post from your original hub, or the new hub.  Posts will be mirrored on both accounts.

          This is a rather revolutionary feature, if we consider some scenarios:

          - What happens if the hub where an identity is based suddenly goes offline?  Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale").  With cloning, you just log into your cloned account, and life goes on happily ever after.

          - The administrator of your hub can no longer afford to pay for his free and public Hubzilla hub. He announces that the hub will be shutting down in two weeks.  This gives you ample time to clone your identity(ies) and preserve yourHubzilla relationships, friends and content.

          - What if your identity is subject to government censorship?  Your hub provider may be compelled to delete your account, along with any identities and associated data.  With cloning, Hubzilla offers censorship resistance.  You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.  

          Hubzilla offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.

          Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.

          Multiple Profiles

          Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.

          Account Backup

          Hubzilla offers a simple, one-click account backup, where you can download a complete backup of your profile(s).  

          Backups can then be used to clone or restore a profile.

          Account Deletion

          Accounts can be immediately deleted by clicking on a link. That's it.  All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.

          Content Creation

          Writing Posts

          Hubzilla supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in Hubzilla. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for Hubzilla had some serious issues and has since been removed. We are currently looking for a replacement.

          When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.

          Deletion of content
          Any content created in Hubzilla remains under the control of the member (or channel) that originally created it.  At any time, a member can delete a message, or a range of messages.  The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot (Hubzilla communication and authentication protocol).

          Media
          Similar to any other modern blogging system, social network, or a micro-blogging service, Hubzilla supports the uploading of files, embedding of videos, linking web pages.

          Previewing/Editing
          Post can be previewed prior to sending and edited after sending.

          Voting/Consensus
          Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.


          Extending Hubzilla

          Hubzilla can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.

          API

          An API is available for use by third-party services. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. Also available is a Twitter API plugin which provides compatibility with dozens of third-party clients and apps.

          Zot protocol

          @@ -194,4 +194,4 @@ even if we have had our occasional disagreements.
        • Simó Albert i Beltran
        • Manuel Reva
        • Manuel Jiménez Friaza
        • -
        \ No newline at end of file +
      -- cgit v1.2.3 From 07706b41f46a726257d8c86beb7ced664d3a7ab7 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 7 Dec 2016 15:22:26 -0800 Subject: document the api filedata call --- doc/api/api_filedata.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ doc/api_zot.md | 4 +-- 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 doc/api/api_filedata.md (limited to 'doc') diff --git a/doc/api/api_filedata.md b/doc/api/api_filedata.md new file mode 100644 index 000000000..1d46a495c --- /dev/null +++ b/doc/api/api_filedata.md @@ -0,0 +1,66 @@ +API filedata +============= + +Provides the ability to download a file from cloud storage in chunks + +GET /api/z/1.0/filedata + + +Required: + + - file_id + attach.hash of desired file ('begins with' match) + + +Optional: + + - start + starting byte of returned data in file (counting from 0) + + - length + length (prior to base64 encoding) of chunk to download + + +Returns: + + attach (DB) structure with base64 encoded 'content' comprised of the desired chunk + + + +Example: + + https://xyz.macgirvin.com/api/z/1.0/filedata?f=&file_id=9f5217770fd&start=0&length=48 + +Returns: + + { + + "attach": { + "id": "107", + "aid": "1", + "uid": "2", + "hash": "9f5217770fd55d563bd77f84d534d8e119a187514bbd391714626cd9c0e60207", + "creator": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "filename": "pcxtopbm.c", + "filetype": "application/octet-stream", + "filesize": "3934", + "revision": "0", + "folder": "", + "flags": "0", + "is_dir": "0", + "is_photo": "0", + "os_storage": "1", + "os_path": "", + "display_path": "", + "content": "LyogcGN4dG9wYm0uYyAtIGNvbnZlcnQgUEMgcGFpbnRicnVzaCAoLnBjeCkgZmls", + "created": "2016-07-24 23:13:01", + "edited": "2016-07-24 23:13:01", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "start": 0, + "length": 48 + } + + } \ No newline at end of file diff --git a/doc/api_zot.md b/doc/api_zot.md index f15736a48..032b4e1c1 100644 --- a/doc/api_zot.md +++ b/doc/api_zot.md @@ -27,9 +27,9 @@ api/z/1.0/filemeta Export file metadata for any uploaded file -api/z/1.0/filedata +[api/z/1.0/filedata](help/api/api_filedata) - Export file contents for any uploaded file + Fetch file contents or partial contents for any uploaded file api/z/1.0/file/export -- cgit v1.2.3 From c4d6189b55ee4f006013fb180bbf1c431094df72 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 7 Dec 2016 18:41:59 -0800 Subject: api_albums --- doc/api/api_albums.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/api_zot.md | 38 ++++++++++++++--------------- 2 files changed, 85 insertions(+), 19 deletions(-) create mode 100644 doc/api/api_albums.md (limited to 'doc') diff --git a/doc/api/api_albums.md b/doc/api/api_albums.md new file mode 100644 index 000000000..230daae3c --- /dev/null +++ b/doc/api/api_albums.md @@ -0,0 +1,66 @@ +API albums +========== + +Description: list photo albums + +GET /api/z/1.0/albums + + +Output: + + text - textual name + + total - number of photos in this album + + url - web URL + + urlencode - textual name, urlencoded + + bin2hex - textual name using bin2hex (which is used in the web URL link) + + +Example: + + + { + + "success": true, + "albums": [ + { + "text": "/", + "total": "2", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/", + "urlencode": "", + "bin2hex": "" + }, + { + "text": "2016-01", + "total": "6", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3031", + "urlencode": "2016-01", + "bin2hex": "323031362d3031" + }, + { + "text": "2016-02", + "total": "7", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3032", + "urlencode": "2016-02", + "bin2hex": "323031362d3032" + }, + { + "text": "Cover Photos", + "total": "5", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/436f7665722050686f746f73", + "urlencode": "Cover+Photos", + "bin2hex": "436f7665722050686f746f73" + }, + { + "text": "Profile Photos", + "total": "26", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/50726f66696c652050686f746f73", + "urlencode": "Profile+Photos", + "bin2hex": "50726f66696c652050686f746f73" + } + ] + + } diff --git a/doc/api_zot.md b/doc/api_zot.md index 032b4e1c1..6da8cddbe 100644 --- a/doc/api_zot.md +++ b/doc/api_zot.md @@ -3,82 +3,82 @@ Zot API -api/z/1.0/channel/export/basic +channel/export/basic Export channel data -api/z/1.0/channel/stream +channel/stream Fetch channel conversation items -api/z/1.0/network/stream +network/stream Fetch network conversation items -[api/z/1.0/files](help/api/api_files) +[files](help/api/api_files) List file storage -api/z/1.0/filemeta +filemeta Export file metadata for any uploaded file -[api/z/1.0/filedata](help/api/api_filedata) +[filedata](help/api/api_filedata) Fetch file contents or partial contents for any uploaded file -api/z/1.0/file/export +file/export -api/z/1.0/file +file -api/z/1.0/albums +[albums](help/api/api_albums) List photo albums -api/z/1.0/photos +photos list photo metadata -api/z/1.0/photo +photo -[api/z/1.0/group](help/api/group) +[group](help/api/group) List privacy groups -[api/z/1.0/group_members](help/api/group_members) +[group_members](help/api/group_members) List members of a privacy group -[api/z/1.0/xchan](help/api/api_xchan) +[xchan](help/api/api_xchan) Global extended channel (identity) information -[api/z/1.0/item/update](help/api/api_item_update) +[item/update](help/api/api_item_update) Create or update an item (post, activity, webpage, etc.) -api/z/1.0/item/full +item/full Get all data associated with an item -api/z/1.0/abook +abook Connections -api/z/1.0/abconfig +abconfig Connection metadata (such as permissions) -api/z/1.0/perm_allowed +perm_allowed Check a permission for a given xchan -- cgit v1.2.3 From d17abedc7de4d43b0495a1be6210b311e58bfe69 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 7 Dec 2016 22:25:50 -0500 Subject: Convert about sections back to bbcode, update some formatting. --- doc/about/about_hub.bb | 7 + doc/about/about_hub.html | 10 - doc/about/about_hubzilla.bb | 481 ++++++++++++++++++++++++++++++++++++++ doc/about/about_hubzilla.html | 197 ---------------- doc/developer/api_zot.md | 521 ++++++++++++++++++++++++++++++++++++++++++ doc/toc.html | 3 + 6 files changed, 1012 insertions(+), 207 deletions(-) create mode 100644 doc/about/about_hub.bb delete mode 100644 doc/about/about_hub.html create mode 100644 doc/about/about_hubzilla.bb delete mode 100644 doc/about/about_hubzilla.html create mode 100644 doc/developer/api_zot.md (limited to 'doc') diff --git a/doc/about/about_hub.bb b/doc/about/about_hub.bb new file mode 100644 index 000000000..dde8950e5 --- /dev/null +++ b/doc/about/about_hub.bb @@ -0,0 +1,7 @@ +[h1]Site Info[/h1] +[list][*][url=[baseurl]/siteinfo]Site Info[/url] +[*][url=[baseurl]/siteinfo/json]Site Info (JSON format)[/url][/list] +[h1]Terms of Service[/h1] +[list][*][url=[baseurl]/help/TermsOfService]Terms of Service for this hub[/url][/list] +#include doc/SiteTOS.md; + diff --git a/doc/about/about_hub.html b/doc/about/about_hub.html deleted file mode 100644 index b6e0dc068..000000000 --- a/doc/about/about_hub.html +++ /dev/null @@ -1,10 +0,0 @@ -

      Terms of Service

      - - -

      Site Info

      - \ No newline at end of file diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb new file mode 100644 index 000000000..bbe7e1604 --- /dev/null +++ b/doc/about/about_hubzilla.bb @@ -0,0 +1,481 @@ + +[h1]Hubzilla Project[/h1] + +$Projectname is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web. + +$Projectname is free and open source. It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers. It can be used to support communication between a few individuals, or scale to many thousands and more. + +$Projectname aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers. + +How you use it depends on how you want to use it. + +It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as [url=http://mediatemple.com/]Media Temple[/url] and [url=http://www.dreamhost.com/]Dreamhost[/url], or on virtual and dedicated servers, offered by the likes of [url=https://www.linode.com]Linode[/url], [url=http://greenqloud.com]GreenQloud[/url] or [url=https://aws.amazon.com]Amazon AWS[/url]. + +In other words, $Projectname can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language. + +Along the way, $Projectname offers a number of unique goodies: + +[b]Single-click user identification:[/b] meaning you can access sites on $Projectname simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online. + +[b]Cloning:[/b] of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address. You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in $Projectname). Now, should your primary hub go down, no worries, your contacts, posts[i]*[/i], and messages[i]*[/i] will automagically continue to be available and accessible under your cloned channel. [i](*: only posts and messages as from the moment you cloned your channel)[/i] + +[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. No questions, no fuss. + + +[h2]Additional Resources and Links[/h2] +For more detailed, technical information about Zot, check out the following links: +[list] +[*][url=http://hubzilla.org]Hubzilla project website[/url] +[*][url=https://github.com/redmatrix/hubzilla]Hubzilla core code repository[/url] +[*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url] +[/list] + +[h2]$Projectname Governance[/h2] +Governance relates to the management of a project and particularly how this relates to conflict resolution. + +[h3]Community Governance[/h3] +The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: + +[ol] +[*] Lazy Consensus + +If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved. + + +[*] Veto + +Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. + + +[*] Community Vote + +A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums. At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules. +[/ol] + +Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is [b]strongly recommended[/b] that the proposer take steps to address any concerns that were raised and re-submit. + + + +[h2]Privacy Policy[/h2] + + +[h3]Summary[/h3] + + +Q: Who can see my content? + +A: By default ANYBODY on the internet, UNLESS you restrict it. $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators. + +Q: Can my content be censored? + +A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws. + + +[h3]Definitions[/h3] + +**$Projectname** + +Otherwise referred to as "the network", $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network. + +**hub** + +An individual computer or server connected to $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free. + +**hub administrator** + +The system operator of an individual hub. + +[h3]Policies[/h3] + +**Public Information** + +Any information or anything posted by you within $Projectname MAY be public or visible to anybody on the internet. To the extent possible, $Projectname allows you to protect content and restrict who can view it. + +Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items. + +You MAY additionally provide other profile information. Any information which you provide in your "default" or **public profile** MAY be transmitted to other hubs in $Projectname and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information. + +**Content** + +Content you provide (status posts, photos, files, etc.) belongs to you. $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability. + +Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content. + +**Comments and Forum posts** + +Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation. + +**Private Information** + +$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator. + +[h3]Identity Privacy[/h3] + +Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible. + +A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in $Projectname network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking. + +* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of $Projectname. This setting is probably enough for most people. + +*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case. + +* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set. + +[h3]Censorship[/h3] + +$Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends. + +$Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but $Projectname as a network cannot block it from being posted. + +$Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision. + +If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences. + +[h1]Features[/h1] + +[h2]$Projectname in a Nutshell[/h2] + +TL;DR + +$Projectname provides distributed web publishing and social communications with [b]decentralised permissions[/b]. + +So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily [i]everybody[/i] on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network. + +$Projectname combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher. + +$Projectname is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools. + +[h2]$Projectname Features[/h2] + + +$Projectname is a general-purpose web publishing and communication network, with several unique features. It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators. + +This page lists some of the core features of $Projectname that are bundled with the official release. As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members. + +[h2]Built for Privacy and Freedom[/h2] + +One of the design goals of $Projectname is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, $Projectname includes a number of features allowing arbitrary levels of privacy: + +[h3]Affinity Slider[/h3] + +When adding connnections in $Projectname, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection. For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances". + +On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends". + +At this point, $Projectname [i]Affinity Slider[/i] tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them. + +The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness. + +[h3]Connection Filtering[/h3] + +You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post. + +[h3]Access Control Lists[/h3] + +When sharing content, members have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names. + +Once sent, the message will be viewable only by the sender and the selected recipients. In other words, the message will not appear on any public walls. + +Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files. + +[h3]Single Sign-on[/h3] + +Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other $Projectname sites and used to control access to private resources. You login once to your home hub. After that, authentication to all $Projectname resources is "magic". + + +[h3]WebDAV enabled File Storage[/h3] + +Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of $Projectname members (including some third party network members) or make them public. + +[h3]Photo Albums[/h3] + +Store photos in albums. All your photos may be protected by Access Control Lists. + +[h3]Events Calendar[/h3] + +Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly. + +[h3]Chatrooms[/h3] + +You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins. + +[h3]Webpage Building[/h3] + +$Projectname has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience. + +[h3]Apps[/h3] + +Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in $Projectname are free and can be created easily by those with no programming skills. + +[h3]Layout[/h3] + +Page layout is based on a description language called Comanche. $Projectname is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments". + +[h3]Bookmarks[/h3] + +Share and save/manage bookmarks from links provided in conversations. + + +[h3]Private Message Encryption and Privacy Concerns[/h3] + +Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP. + +Each $Projectname channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit. + +Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by $Projectname operators or ISPs or anybody who does not know the passcode. + +Public messages are generally not encrypted in transit or in storage. + +Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet. + +Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site. + + +[h3]Service Federation[/h3] + +In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as $Projectname and may present privacy risks. + +There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your $Projectname hub may be used as an OpenID provider to authenticate you to external services which use this technology. + +Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel. + +[h3]Privacy Groups[/h3] + +Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post). + + +[h3]Directory Services[/h3] + +We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal $Projectname sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays). + + +[h3]TLS/SSL[/h3] + +For $Projectname hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL. Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite. + +[h3]Channel Settings[/h3] + +When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels. + +If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication. For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit. + +The options are: + + - Nobody except yourself. + - Only those you specifically allow. + - Anybody in your address book. + - Anybody on this website. + - Anybody in this network. + - Anybody authenticated. + - Anybody on the Internet. + + +[h3]Public and Private Forums[/h3] + +Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members. + + +[h3]Account Cloning[/h3] + +Accounts in $Projectname are referred to as [i]nomadic identities[/i], because a member's identity is not bound to the hub where the identity was originally created. For example, when you create a Facebook or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com. + +By contrast, say you've created a $Projectname identity called [b]tina@$Projectnamehub.com[/b]. You can clone it to another $Projectname hub by choosing the same, or a different name: [b]liveForever@Some$ProjectnameHub.info[/b] + +Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone. It doesn't matter whether you send a post from your original hub, or the new hub. Posts will be mirrored on both accounts. + +This is a rather revolutionary feature, if we consider some scenarios: + + - What happens if the hub where an identity is based suddenly goes offline? Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale"). With cloning, you just log into your cloned account, and life goes on happily ever after. + + - The administrator of your hub can no longer afford to pay for his free and public $Projectname hub. He announces that the hub will be shutting down in two weeks. This gives you ample time to clone your identity(ies) and preserve your$Projectname relationships, friends and content. + + - What if your identity is subject to government censorship? Your hub provider may be compelled to delete your account, along with any identities and associated data. With cloning, $Projectname offers [b]censorship resistance[/b]. You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet. + +$Projectname offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page. + +Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>. + +[h3]Multiple Profiles[/h3] + +Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public. + +[h3]Account Backup[/h3] + +Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s). + +Backups can then be used to clone or restore a profile. + +[h3]Account Deletion[/h3] + +Accounts can be immediately deleted by clicking on a link. That's it. All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical. + +[h3][size=20]Content Creation[/h2] + +[h3]Writing Posts[/h3] + +$Projectname supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in $Projectname. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for $Projectname had some serious issues and has since been removed. We are currently looking for a replacement. + +When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text. + +[h3]Deletion of content[/h3] +Any content created in $Projectname remains under the control of the member (or channel) that originally created it. At any time, a member can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot ($Projectname communication and authentication protocol). + +[h3]Media[/h3] +Similar to any other modern blogging system, social network, or a micro-blogging service, $Projectname supports the uploading of files, embedding of videos, linking web pages. + +[h3]Previewing/Editing[/h3] +Post can be previewed prior to sending and edited after sending. + +[h3]Voting/Consensus[/h3] +Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys. + + +[h3]Extending $Projectname[/h3] + +$Projectname can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins. + +[h3]API[/h3] + +An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to $Projectname. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. + + + + +[h1]What is Zot?[/h1] + +Zot is the protocol that powers $Projectname, providing three core capabilities: Communications, Identity, and Access Control. + +The functionality it provides can also be described as follows: + + - a relationship online is just a bunch of permissions + - the internet is just another folder + +[h2]Communications[/h2] + +Zot is a revolutionary protocol which provides [i]decentralised communications[/i] and [i]identity management[/i] across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality. + +Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers. + +Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the [i]Affinity Slider[/i]. + +You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of [i]decentralized identity[/i] services. + +[h2]Identity[/h2] + +Zot's identity layer is unique. It provides [i]invisible single sign-on[/i] across all sites in the grid. + +It also provides [i]nomadic identity[/i], so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently. + +The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact. + +Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship. + +Nomadic identity, single sign-on, and $Projectname's decentralization of hubs, we believe, introduce a high degree of degree of [i]resiliency[/i] and [i]persistence[/i] in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship. + +As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit. + +How does Zot do that? We call it [i]magic-auth[/i], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online. + +You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control. + +You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it. + +[h2]Access Control[/h2] + +Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create. + +Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control. + +This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. + +Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it. + + +[h1]Credits[/h1] + +Thanks to all who have helped and contributed to the project and its predecessors over the years. +It is possible we missed in your name but this is unintentional. We also thank the community and +its members for providing valuable input and without whom this entire effort would be meaningless. + +It is also worth acknowledging the contributions and solutions to problems which arose from +discussions amongst members and developers of other somewhat related and competing projects; +even if we have had our occasional disagreements. + +[list] +[li]Mike Macgirvin[/li] +[li]Fabio Comuni[/li] +[li]Simon L'nu[/li] +[li]marijus[/li] +[li]Tobias Diekershoff[/li] +[li]fabrixxm[/li] +[li]tommy tomson[/li] +[li]Simon[/li] +[li]zottel[/li] +[li]Christian Vogeley[/li] +[li]Jeroen van Riet Paap (jeroenpraat)[/li] +[li]Michael Vogel[/li] +[li]erik[/li] +[li]Zach Prezkuta[/li] +[li]Paolo T[/li] +[li]Michael Meer[/li] +[li]Michael[/li] +[li]Abinoam P. Marques Jr[/li] +[li]Tobias Hößl[/li] +[li]Alexander Kampmann[/li] +[li]Olaf Conradi[/li] +[li]Paolo Tacconi[/li] +[li]tobiasd[/li] +[li]Devlon Duthie[/li] +[li]Zvi ben Yaakov (a.k.a rdc)[/li] +[li]Alexandre Hannud Abdo[/li] +[li]Olivier Migeot[/li] +[li]Chris Case[/li] +[li]Klaus Weidenbach[/li] +[li]Michael Johnston[/li] +[li]olivierm[/li] +[li]Vasudev Kamath[/li] +[li]pixelroot[/li] +[li]Max Weller[/li] +[li]duthied[/li] +[li]Martin Schmitt[/li] +[li]Sebastian Egbers[/li] +[li]Erkan Yilmaz[/li] +[li]sasiflo[/li] +[li]Stefan Parviainen[/li] +[li]Haakon Meland Eriksen[/li] +[li]Oliver Hartmann (23n)[/li] +[li]Erik Lundin[/li] +[li]habeascodice[/li] +[li]sirius[/li] +[li]Charles[/li] +[li]Tony Baldwin[/li] +[li]Hauke Zuehl[/li] +[li]Keith Fernie[/li] +[li]Anne Walk[/li] +[li]toclimb[/li] +[li]Daniel Frank[/li] +[li]Matthew Exon[/li] +[li]Michal Supler[/li] +[li]Tobias Luther[/li] +[li]U-SOUND\mike[/li] +[li]mrjive[/li] +[li]nostupidzone[/li] +[li]tonnerkiller[/li] +[li]Antoine G[/li] +[li]Christian Drechsler[/li] +[li]Ludovic Grossard[/li] +[li]RedmatrixCanada[/li] +[li]Stanislav Lechev [0xAF][/li] +[li]aweiher[/li] +[li]bufalo1973[/li] +[li]dsp1986[/li] +[li]felixgilles[/li] +[li]ike[/li] +[li]maase2[/li] +[li]mycocham[/li] +[li]ndurchx[/li] +[li]pafcu[/li] +[li]Simó Albert i Beltran[/li] +[li]Manuel Reva[/li] +[li]Manuel Jiménez Friaza[/li] +[/list] \ No newline at end of file diff --git a/doc/about/about_hubzilla.html b/doc/about/about_hubzilla.html deleted file mode 100644 index faa59fcf2..000000000 --- a/doc/about/about_hubzilla.html +++ /dev/null @@ -1,197 +0,0 @@ - - -

      Hubzilla Project

      -

      - Hubzilla is a decentralized community server providing communications, identity, and access control services which work together seamlessly across domains and connected websites. It allows anybody to publicly or privately publish a range of web/media/personal content. The cross-domain privacy implementation is unique and somewhat revolutionary, as identity and access rights are negotiated by servers invisibly in the background.

      Hubzilla is free and open source.  It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers.  It can be used to support communication between a few individuals, or scale to many thousands and more.

      Hubzilla aims to be skill and resource agnostic. It is easy to use by everyday people, as well as by systems administrators and developers.

      How you use it depends on how you want to use it.

      It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as Media Temple and Dreamhost, or on virtual and dedicated servers, offered by the likes of Linode,  GreenQloud or Amazon AWS.

      In other words, Hubzilla can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language.

      Along the way, Hubzilla offers a number of unique goodies:

      Single-click user identification: meaning you can access sites on Hubzilla simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online.

      Cloning: of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address.  You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in Hubzilla).  Now, should your primary hub go down, no worries, your contacts, posts*, and messages* will automagically continue to be available and accessible under your cloned channel. (*: only posts and messages as from the moment you cloned your channel)

      Privacy: Hubzilla identities (Zot IDs) can be deleted, backed up/downloaded, and cloned.  The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub.  No questions, no fuss. -

      - - - - -

      Governance

      - -

      Governance relates to the management of a project and particularly how this relates to conflict resolution.

      Community Governance



      The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order:

      • Lazy Consensus

        If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved.
      • Veto

        Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented.
      • Community Vote

        A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums.  At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules.


      Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is strongly recommended that the proposer take steps to address any concerns that were raised and re-submit. - - - -

      Privacy Policy

      - -

      Summary

      - -

      Q: Who can see my content?

      - -

      A: By default ANYBODY on the internet, UNLESS you restrict it. Hubzilla allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within Hubzilla which are even resistant to eavesdropping by skilled and determined hub administrators.

      - -

      Q: Can my content be censored?

      - -

      A: Hubzilla (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws.

      - -

      Definitions

      - -

      Hubzilla

      - -

      Otherwise referred to as "the network", Hubzilla is a collection of individual computers/servers (aka hubs) which connect together to form a larger cooperative network.

      - -

      hub

      - -

      An individual computer or server connected to Hubzilla. These are provided by a hub administrator and may be public or private, paid or free.

      - -

      hub administrator

      - -

      The system operator of an individual hub.

      - -

      Policies

      - -

      Public Information

      - -

      Any information or anything posted by you within Hubzilla MAY be public or visible to anybody on the internet. To the extent possible, Hubzilla allows you to protect content and restrict who can view it.

      - -

      Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items.

      - -

      You MAY additionally provide other profile information. Any information which you provide in your "default" or public profile MAY be transmitted to other hubs in Hubzilla and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information.

      - -

      Content

      - -

      Content you provide (status posts, photos, files, etc.) belongs to you. Hubzilla default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). Hubzilla developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.

      - -

      Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other Hubzilla sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.

      - -

      Comments and Forum posts

      - -

      Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation.

      - -

      Private Information

      - -

      Hubzilla developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator.

      - -

      Identity Privacy

      - -

      Privacy for your identity is another aspect. Because you have a decentralized identity in Hubzilla, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible.

      - -

      A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in Hubzilla network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking.

      - -
        -
      • You can enable Do Not Track (DNT) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of Hubzilla. This setting is probably enough for most people.
      • -
        - -
      • You can disable publication of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.
      • -
        - -
      • You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set.
      • -
      - -

      Censorship

      - -

      Hubzilla is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends.

      - -

      Hubzilla as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the Terms of Service of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but Hubzilla as a network cannot block it from being posted.

      - -

      Hubzilla RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a Hubzilla decision.

      - -

      If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences.

      - - - -

      Features

      -

      - Hubzilla in a Nutshell

      TL;DR

      Hubzilla provides distributed web publishing and social communications with decentralised permissions.

      So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily everybody on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network.

      Hubzilla combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher.

      Hubzilla is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools.

      Hubzilla Features


      Hubzilla is a general-purpose web publishing and communication network, with several unique features.  It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.

      This page lists some of the core features of Hubzilla that are bundled with the official release.  As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members.

      Built for Privacy and Freedom

      One of the design goals of Hubzilla is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, Hubzilla includes a number of features allowing arbitrary levels of privacy:

      Affinity Slider

      When adding connnections in Hubzilla, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection.  For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances".

      On the other hand, when adding a friend's channel, they could be placed under the affinity level of "Friends".

      At this point, Hubzilla Affinity Slider tool, which usually appears at the top of your "Matrix" page, adjusts the content on the page to include those within the desired affinity range. Channels outside that range will not be displayed, unless you adjust the slider to include them.

      The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.

      Connection Filtering

      You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post.  

      Access Control Lists

      When sharing content, members have the option of restricting who sees the content.  By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.

      Once sent, the message will be viewable only by the sender and the selected recipients.  In other words, the message will not appear on any public walls.

      Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.

      Single Sign-on

      Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other Hubzilla sites and used to control access to private resources. You login once to your home hub. After that, authentication to all Hubzilla resources is "magic".


      WebDAV enabled File Storage

      Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of Hubzilla members (including some third party network members) or make them public.

      Photo Albums

      Store photos in albums. All your photos may be protected by Access Control Lists.

      Events Calendar

      Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly.

      Chatrooms

      You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.      

      Webpage Building

      Hubzilla has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.

      Apps

      Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in Hubzilla are free and can be created easily by those with no programming skills.

      Layout

      Page layout is based on a description language called Comanche. Hubzilla is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".

      Bookmarks

      Share and save/manage bookmarks from links provided in conversations.    


      Private Message Encryption and Privacy Concerns

      Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP.  

      Each Hubzilla channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created. This is used to protect private messages and posts in transit.

      Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by Hubzilla operators or ISPs or anybody who does not know the passcode.

      Public messages are generally not encrypted in transit or in storage.  

      Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.

      Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.  


      Service Federation

      In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as Hubzilla and may present privacy risks.

      There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress. Your Hubzilla hub may be used as an OpenID provider to authenticate you to external services which use this technology.

      Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.

      Privacy Groups

      Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post).  


      Directory Services

      We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal Hubzilla sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).  


      TLS/SSL

      For Hubzilla hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL.  Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite.

      Channel Settings

      When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.  

      If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication.  For example, under the "Security and Privacy Settings" heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.  

      The options are:

      - Nobody except yourself.
      - Only those you specifically allow.
      - Anybody in your address book.
      - Anybody on this website.
      - Anybody in this network.
      - Anybody authenticated.
      - Specific people you provide a Guest Access Token to in order to access a specific item.
      - Anybody on the Internet.


      Public and Private Forums

      Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.


      Account Cloning

      Accounts in Hubzilla are referred to as nomadic identities, because a member's identity is not bound to the hub where the identity was originally created.  For example, when you create a Facebook or Gmail account, it is tied to those services.  They cannot function without Facebook.com or Gmail.com.  

      By contrast, say you've created a Hubzilla identity called tina@Hubzillahub.com.  You can clone it to another Hubzilla hub by choosing the same, or a different name: liveForever@SomeHubzillaHub.info

      Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone.  It doesn't matter whether you send a post from your original hub, or the new hub.  Posts will be mirrored on both accounts.

      This is a rather revolutionary feature, if we consider some scenarios:

      - What happens if the hub where an identity is based suddenly goes offline?  Without cloning, a member will not be able to communicate until that hub comes back online (no doubt many of you have seen and cursed the Twitter "Fail Whale").  With cloning, you just log into your cloned account, and life goes on happily ever after.

      - The administrator of your hub can no longer afford to pay for his free and public Hubzilla hub. He announces that the hub will be shutting down in two weeks.  This gives you ample time to clone your identity(ies) and preserve yourHubzilla relationships, friends and content.

      - What if your identity is subject to government censorship?  Your hub provider may be compelled to delete your account, along with any identities and associated data.  With cloning, Hubzilla offers censorship resistance.  You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.  

      Hubzilla offers interesting new possibilities for privacy. You can read more at the <<Private Communications Best Practices>> page.

      Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>.

      Multiple Profiles

      Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public.

      Account Backup

      Hubzilla offers a simple, one-click account backup, where you can download a complete backup of your profile(s).  

      Backups can then be used to clone or restore a profile.

      Account Deletion

      Accounts can be immediately deleted by clicking on a link. That's it.  All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.

      Content Creation

      Writing Posts

      Hubzilla supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in Hubzilla. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for Hubzilla had some serious issues and has since been removed. We are currently looking for a replacement.

      When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text.

      Deletion of content
      Any content created in Hubzilla remains under the control of the member (or channel) that originally created it.  At any time, a member can delete a message, or a range of messages.  The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot (Hubzilla communication and authentication protocol).

      Media
      Similar to any other modern blogging system, social network, or a micro-blogging service, Hubzilla supports the uploading of files, embedding of videos, linking web pages.

      Previewing/Editing
      Post can be previewed prior to sending and edited after sending.

      Voting/Consensus
      Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys.


      Extending Hubzilla

      Hubzilla can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.

      API

      An API is available for use by third-party services. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. Also available is a Twitter API plugin which provides compatibility with dozens of third-party clients and apps. -

      - -

      Zot protocol

      -

      - What is Zot?

      Zot is the protocol that powers Hubzilla, providing three core capabilities: Communications, Identity, and Access Control.

      The functionality it provides can also be described as follows:

      - a relationship online is just a bunch of permissions
      - the internet is just another folder

      Communications

      Zot is a revolutionary protocol which provides decentralised communications and identity management across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality.

      Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers.

      Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the Affinity Slider.

      You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of decentralized identity services.

      Identity

      Zot's identity layer is unique. It provides invisible single sign-on across all sites in the grid.

      It also provides nomadic identity, so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently.

      The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact.

      Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship.

      Nomadic identity, single sign-on, and Hubzilla's decentralization of hubs, we believe, introduce a high degree of degree of resiliency and persistence in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship.

      As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit.

      How does Zot do that? We call it magic-auth, because Hubzilla hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid.  This is one of the design goals of Hubzilla: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online.

      You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control.

      You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it.

      Access Control

      Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across Hubzilla. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create.

      Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control.

      This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid is your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers.

      Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it.

      Additional Resources and Links

      For more detailed, technical information about Zot, check out the following links:

      - A high level overview

      - Zot development specification

      - Zot reference implementation in PHP -

      - -

      Credits

      -

      -Thanks to all who have helped and contributed to the project and its predecessors over the years. -It is possible we missed in your name but this is unintentional. We also thank the community and -its members for providing valuable input and without whom this entire effort would be meaningless. -

      -

      -It is also worth acknowledging the contributions and solutions to problems which arose from -discussions amongst members and developers of other somewhat related and competing projects; -even if we have had our occasional disagreements. -

      -
        -
      • Mike Macgirvin
      • -
      • Fabio Comuni
      • -
      • Simon L'nu
      • -
      • marijus
      • -
      • Tobias Diekershoff
      • -
      • fabrixxm
      • -
      • tommy tomson
      • -
      • Simon
      • -
      • zottel
      • -
      • Christian Vogeley
      • -
      • Jeroen van Riet Paap (jeroenpraat)
      • -
      • Michael Vogel
      • -
      • erik
      • -
      • Zach Prezkuta
      • -
      • Paolo T
      • -
      • Michael Meer
      • -
      • Michael
      • -
      • Abinoam P. Marques Jr
      • -
      • Tobias Hößl
      • -
      • Alexander Kampmann
      • -
      • Olaf Conradi
      • -
      • Paolo Tacconi
      • -
      • tobiasd
      • -
      • Devlon Duthie
      • -
      • Zvi ben Yaakov (a.k.a rdc)
      • -
      • Alexandre Hannud Abdo
      • -
      • Olivier Migeot
      • -
      • Chris Case
      • -
      • Klaus Weidenbach
      • -
      • Michael Johnston
      • -
      • olivierm
      • -
      • Vasudev Kamath
      • -
      • pixelroot
      • -
      • Max Weller
      • -
      • duthied
      • -
      • Martin Schmitt
      • -
      • Sebastian Egbers
      • -
      • Erkan Yilmaz
      • -
      • sasiflo
      • -
      • Stefan Parviainen
      • -
      • Haakon Meland Eriksen
      • -
      • Oliver Hartmann (23n)
      • -
      • Erik Lundin
      • -
      • habeascodice
      • -
      • sirius
      • -
      • Charles
      • -
      • Tony Baldwin
      • -
      • Hauke Zuehl
      • -
      • Keith Fernie
      • -
      • Anne Walk
      • -
      • toclimb
      • -
      • Daniel Frank
      • -
      • Matthew Exon
      • -
      • Michal Supler
      • -
      • Tobias Luther
      • -
      • U-SOUND\mike
      • -
      • mrjive
      • -
      • nostupidzone
      • -
      • tonnerkiller
      • -
      • Antoine G
      • -
      • Christian Drechsler
      • -
      • Ludovic Grossard
      • -
      • RedmatrixCanada
      • -
      • Stanislav Lechev [0xAF]
      • -
      • aweiher
      • -
      • bufalo1973
      • -
      • dsp1986
      • -
      • felixgilles
      • -
      • ike
      • -
      • maase2
      • -
      • mycocham
      • -
      • ndurchx
      • -
      • pafcu
      • -
      • Simó Albert i Beltran
      • -
      • Manuel Reva
      • -
      • Manuel Jiménez Friaza
      • -
      diff --git a/doc/developer/api_zot.md b/doc/developer/api_zot.md new file mode 100644 index 000000000..26af72298 --- /dev/null +++ b/doc/developer/api_zot.md @@ -0,0 +1,521 @@ +Zot API +======= + +The API endpoints detailed below are relative to `api/z/1.0`, meaning that if an +API is listed as `channel/stream` the full API URL is +`[baseurl]/api/z/1.0/channel/stream` + +channel/export/basic +================================================================================ + +Export channel data + + +channel/stream +================================================================================ + +Fetch conversation items + + +files +================================================================================ + +List file storage + +filemeta +================================================================================ +Export file metadata for any uploaded file + + +filedata +================================================================================ + +Export file contents for any uploaded file + + +file/export +================================================================================ + +file +================================================================================ + +albums +================================================================================ + +List photo albums + + +photos +================================================================================ + +list photo metadata + + +photo +================================================================================ + + +group +================================================================================ + +`GET /api/z/1.0/group` + +Description: list privacy groups + +Returns: DB tables of all privacy groups. + +To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call. + + + [ + + { + "id": "1", + "hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Friends" + }, + { + "id": "2", + "hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family", + "uid": "2", + "visible": "1", + "deleted": "0", + "gname": "Family" + }, + { + "id": "3", + "hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers", + "uid": "2", + "visible": "0", + "deleted": "0", + "gname": "Co-workers" + } + ] + +group_members +================================================================================ + +`GET /api/z/1.0/group_members` + +Required: + +group_id or group_name + + +Returns: + +group_member+abook+xchan (DB join) for each member of the privacy group + + + [ + + { + "id": "1", + "uid": "2", + "gid": "1", + "xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_id": "2", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "abook_my_perms": "218555", + "abook_their_perms": "0", + "abook_closeness": "0", + "abook_created": "2016-01-02 21:16:26", + "abook_updated": "2016-01-02 21:16:26", + "abook_connected": "0000-00-00 00:00:00", + "abook_dob": "0000-00-00 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "1", + "abook_feed": "0", + "abook_profile": "", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw", + "xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2", + "xchan_addr": "teller@xyz.macgirvin.com", + "xchan_url": "https://xyz.macgirvin.com/channel/teller", + "xchan_connurl": "https://xyz.macgirvin.com/poco/teller", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Teller", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-10-19 01:26:50", + "xchan_name_date": "2016-01-02 21:16:26", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + }, + { + "id": "12", + "uid": "2", + "gid": "1", + "xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_id": "24", + "abook_account": "1", + "abook_channel": "2", + "abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "abook_my_perms": "218555", + "abook_their_perms": "218555", + "abook_closeness": "80", + "abook_created": "2016-01-27 00:48:43", + "abook_updated": "2016-12-04 17:16:58", + "abook_connected": "2016-12-04 17:16:58", + "abook_dob": "0001-01-01 00:00:00", + "abook_flags": "0", + "abook_blocked": "0", + "abook_ignored": "0", + "abook_hidden": "0", + "abook_archived": "0", + "abook_pending": "0", + "abook_unconnected": "0", + "abook_self": "0", + "abook_feed": "0", + "abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819", + "abook_incl": "", + "abook_excl": "", + "abook_instance": "", + "xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w", + "xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA", + "xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E", + "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "xchan_photo_mimetype": "image/png", + "xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4", + "xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5", + "xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6", + "xchan_addr": "cloner@xyz.macgirvin.com", + "xchan_url": "http://abc.macgirvin.com/channel/cloner", + "xchan_connurl": "http://abc.macgirvin.com/poco/cloner", + "xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s", + "xchan_connpage": "", + "xchan_name": "Karen", + "xchan_network": "zot", + "xchan_instance_url": "", + "xchan_flags": "0", + "xchan_photo_date": "2016-03-31 19:59:20", + "xchan_name_date": "2016-01-26 23:23:42", + "xchan_hidden": "0", + "xchan_orphan": "0", + "xchan_censored": "0", + "xchan_selfcensored": "0", + "xchan_system": "0", + "xchan_pubforum": "0", + "xchan_deleted": "0" + } + + ] + + +xchan +================================================================================ + +An xchan is a global location independent channel and is the primary record for a network +identity. It may refer to channels on other websites, networks, or services. + +`GET /api/z/1.0/xchan` + +Required: one of [ address, hash, guid ] as GET parameters + +Returns a portable xchan structure + +Example: https://xyz.macgirvin.com/api/z/1.0/xchan?f=&address=mike@macgirvin.com + +Returns: + + { + "hash": "jr54M_y2l5NgHX5wBvP0KqWcAHuW23p1ld-6Vn63_pGTZklrI36LF8vUHMSKJMD8xzzkz7s2xxCx4-BOLNPaVA", + "guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg", + "guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4", + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n", + "photo_mimetype": "image/jpeg", + "photo_l": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-4", + "photo_m": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-5", + "photo_s": "https://xyz.macgirvin.com/photo/350b74555c04429148f2e12775f6c403-6", + "address": "mike@macgirvin.com", + "url": "https://macgirvin.com/channel/mike", + "connurl": "https://macgirvin.com/poco/mike", + "follow": "https://macgirvin.com/follow?f=&url=%s", + "connpage": "https://macgirvin.com/connect/mike", + "name": "Mike Macgirvin", + "network": "zot", + "instance_url": "", + "flags": "0", + "photo_date": "2012-12-06 05:06:11", + "name_date": "2012-12-06 04:59:13", + "hidden": "1", + "orphan": "0", + "censored": "0", + "selfcensored": "0", + "system": "0", + "pubforum": "0", + "deleted": "0" + } + +item/update +================================================================================ + +Create or update an item (post, activity, webpage, etc.) + +Usage: `POST /api/z/1.0/item/update` + +Description: item/update posts an item (typically a conversation item or post, but can be any item) using form input. + + +Required: + +- body + + text/bbcode contents by default. + + +Optional: + +- $_FILES['media'] + + uploaded media file to include with post + +- title + + title of post/item + +- contact_allow + + array of xchan.xchan_hash allowed to view this item + +- group_allow + + array of group.hash allowed to view this item + +- contact_deny + + array of xchan.xchan_hash not allowed to view this item + +- group_deny + + array of group.hash not allowed to view this item + +- coord + + geographic coordinates + +- location + + freefrom location + +- expire + + datetime this post will expire or be removed + +- mimetype + + mimetype if not text/bbcode + +- parent + + item.id of parent to this post (makes it a comment) + +- parent_mid + + alternate form of parent using message_id + +- remote_xchan + + xchan.xchan_hash of this message author if not the channel owner + +- consensus + + boolean set to true if this is a consensus or voting item (default false) + +- nocomment + + boolean set to true if comments are to be disabled (default false) + +- origin + + do not use this without reading the code + +- namespace + + persistent identity for a remote network or service + +- remote_id + + message_id of this resource on a remote network or service + +- message_id + + message_id of this item (leave unset to generate one) + +- created + + datetime of message creation + +- post_id + + existing item.id if this is an edit operation + +- app + + application or network name to display with item + +- categories + + comma separated categories for this item + +- webpage + + item.page_type if not 0 + +- pagetitle + + for webpage and design elements, the 'page name' + +- layout_mid + + item.mid of layout for this design element + +- plink + + permalink for this item if different than the default + +- verb + + activitystream verb for this item/activity + +- obj_type + + activitystream object type for this item/activity + + + +Example: + + curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/item/update -d body="hello world" + + +Returns: + + + { + + "success": true, + "item_id": "2245", + "item": { + "id": "2245", + "mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "aid": "1", + "uid": "2", + "parent": "2245", + "parent_mid": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "thr_parent": "14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "created": "2016-12-03 20:00:12", + "edited": "2016-12-03 20:00:12", + "expires": "0001-01-01 00:00:00", + "commented": "2016-12-03 20:00:12", + "received": "2016-12-03 20:00:12", + "changed": "2016-12-03 20:00:12", + "comments_closed": "0001-01-01 00:00:00", + "owner_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "author_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "source_xchan": "", + "mimetype": "text/bbcode", + "title": "", + "body": "hello world", + "html": "", + "app": "", + "lang": "", + "revision": "0", + "verb": "http://activitystrea.ms/schema/1.0/post", + "obj_type": "http://activitystrea.ms/schema/1.0/note", + "obj": "", + "tgt_type": "", + "target": "", + "layout_mid": "", + "postopts": "", + "route": "", + "llink": "https://xyz.macgirvin.com/display/14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "plink": "https://xyz.macgirvin.com/channel/mychannel/?f=&mid=14135cdecf6b8e3891224e4391748722114da6668eebbcb56fe4667b60b88249@xyz.macgirvin.com", + "resource_id": "", + "resource_type": "", + "attach": "", + "sig": "sa4TOQNfHtV13HDZ1tuQGWNBpZp-nWhT2GMrZEmelXxa_IvEepD2SEsCTWOBqM8OKPJLfNy8_i-ORXjrOIIgAa_aT8cw5vka7Q0C8L9eEb_LegwQ_BtH0CXO5uT30e_8uowkwzh6kmlVg1ntD8QqrGgD5jTET_fMQOIw4gQUBh40GDG9RB4QnPp_MKsgemGrADnRk2vHO7-bR32yQ0JI-8G-eyeqGaaJmIwkHoi0vXsfjZtU7ijSLuKEBWboNjKEDU89-vQ1c5Kh1r0pmjiDk-a5JzZTYShpuhVA-vQgEcADA7wkf4lJZCYNwu3FRwHTvhSMdF0nmyv3aPFglQDky38-SAXZyQSvd7qlABHGCVVDmYrYaiq7Dh4rRENbAUf-UJFHPCVB7NRg34R8HIqmOKq1Su99bIWaoI2zuAQEVma9wLqMoFsluFhxX58KeVtlCZlro7tZ6z619-dthS_fwt0cL_2dZ3QwjG1P36Q4Y4KrCTpntn9ot5osh-HjVQ01h1I9yNCj6XPgYJ8Im3KT_G4hmMDFM7H9RUrYLl2o9XYyiS2nRrf4aJHa0UweBlAY4zcQG34bw2AMGCY53mwsSArf4Hs3rKu5GrGphuwYX0lHa7XEKMglwBWPWHI49q7-oNWr7aWwn1FnfaMfl4cQppCMtKESMNRKm_nb9Dsh5e0", + "diaspora_meta": "", + "location": "", + "coord": "", + "public_policy": "", + "comment_policy": "contacts", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "item_restrict": "0", + "item_flags": "0", + "item_private": "0", + "item_origin": "1", + "item_unseen": "0", + "item_starred": "0", + "item_uplink": "0", + "item_consensus": "0", + "item_wall": "1", + "item_thread_top": "1", + "item_notshown": "0", + "item_nsfw": "0", + "item_relay": "0", + "item_mentionsme": "0", + "item_nocomment": "0", + "item_obscured": "0", + "item_verified": "1", + "item_retained": "0", + "item_rss": "0", + "item_deleted": "0", + "item_type": "0", + "item_hidden": "0", + "item_unpublished": "0", + "item_delayed": "0", + "item_pending_remove": "0", + "item_blocked": "0" + } + + } + +item/full +================================================================================ + +Get all data associated with an item + +abook +================================================================================ + +Connections + +abconfig +================================================================================ + +Connection metadata (such as permissions) + +perm_allowed +================================================================================ + +Check a permission for a given xchan diff --git a/doc/toc.html b/doc/toc.html index c9c5ec46d..bc5097d0e 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -90,6 +90,7 @@
    @@ -417,8 +418,10 @@ tocUl.removeClass(); // Classes are automatically added to
      elements by something else tocUl.toc({content: "#doco-content", headings: "h1,h2"}); tocUl.addClass('toc-content'); + if( $(window).height() > 499) { tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); } + } }); }); -- cgit v1.2.3 From c989a94916c8428f71aa52e12dd02b376f85aa3a Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Thu, 8 Dec 2016 20:33:03 -0500 Subject: Convert consolidated pages back to BBcode and Markdown where possible --- doc/admin/administrator_guide.html | 342 --------------------------- doc/admin/administrator_guide.md | 345 +++++++++++++++++++++++++++ doc/developer/developer_guide.html | 470 ------------------------------------- doc/developer/developer_guide.md | 422 +++++++++++++++++++++++++++++++++ doc/member/member_faq.bb | 10 + doc/member/member_faq.html | 19 -- doc/member/member_guide.bb | 362 ++++++++++++++++++++++++++++ doc/member/member_guide.html | 460 ------------------------------------ 8 files changed, 1139 insertions(+), 1291 deletions(-) delete mode 100644 doc/admin/administrator_guide.html create mode 100644 doc/admin/administrator_guide.md delete mode 100644 doc/developer/developer_guide.html create mode 100644 doc/developer/developer_guide.md create mode 100644 doc/member/member_faq.bb delete mode 100644 doc/member/member_faq.html create mode 100644 doc/member/member_guide.bb delete mode 100644 doc/member/member_guide.html (limited to 'doc') diff --git a/doc/admin/administrator_guide.html b/doc/admin/administrator_guide.html deleted file mode 100644 index 674d2a916..000000000 --- a/doc/admin/administrator_guide.html +++ /dev/null @@ -1,342 +0,0 @@ -

      Overview

      - -

      Hubzilla is more than a simple web application. It is a -complex communications system which more closely resembles an email server -than a web server. For reliability and performance, messages are delivered in -the background and are queued for later delivery when sites are down. This -kind of functionality requires a bit more of the host system than the typical -blog. Not every PHP/MySQL hosting provider will be able to support -Hubzilla. Many will but please review the requirements and confirm these -with your hosting provider prior to installation.

      - -

      We've tried very hard to ensure that Hubzilla will run on commodity -hosting platforms such as those used to host Wordpress blogs and Drupal -websites. It will run on most any Linux VPS system. Windows LAMP platforms -such as XAMPP and WAMP are not officially supported at this time however -we welcome patches if you manage to get it working.

      - -

      Where to find more help

      - -

      If you encounter problems or have issues not addressed in this documentation, -please let us know via the Github issue -tracker. Please be as clear as you -can about your operating environment and provide as much detail as possible -about any error messages you may see, so that we can prevent it from happening -in the future. Due to the large variety of operating systems and PHP platforms -in existence we may have only limited ability to debug your PHP installation or -acquire any missing modules * but we will do our best to solve any general code -issues.

      - -

      Before you begin

      - -

      Choose a domain name or subdomain name for your server

      - -

      Hubzilla can only be installed into the root of a domain or sub-domain, and can -not be installed using alternate TCP ports.

      - -

      Decide if you will use SSL and obtain an SSL certificate before software installation

      - -

      You SHOULD use SSL. If you use SSL, you MUST use a "browser-valid" certificate.
      You MUST NOT use self-signed certificates!

      - -

      Please test your certificate prior to installation. A web tool for testing your -certificate is available at "http://www.digicert.com/help/". When visiting your -site for the first time, please use the SSL ("https://") URL if SSL is available. -This will avoid problems later. The installation routine will not allow you to -use a non browser-valid certificate.

      - -

      This restriction is incorporated because public posts from you may contain -references to images on your own hub. Other members viewing their stream on -other hubs will get warnings if your certificate is not trusted by their web -browser. This will confuse many people because this is a decentralised network -and they will get the warning about your hub while viewing their own hub and may -think their own hub has an issue. These warnings are very technical and scary to -some folks, many of whom will not know how to proceed except to follow the browser -advice. This is disruptive to the community. That said, we recognise the issues -surrounding the current certificate infrastructure and agree there are many -problems, but that doesn't change the requirement.

      - -

      Free "browser-valid" certificates are available from providers such as StartSSL -and LetsEncrypt.

      - -

      If you do NOT use SSL, there may be a delay of up to a minute for the initial -install script * while we check the SSL port to see if anything responds there. -When communicating with new sites, Hubzilla always attempts connection on the -SSL port first, before falling back to a less secure connection. If you do not -use SSL, your webserver MUST NOT listen on port 443 at all.

      - -

      If you use LetsEncrypt to provide certificates and create a file under -.well-known/acme-challenge so that LetsEncrypt can verify your domain ownership, -please remove or rename the .well-known directory as soon as the certificate is -generated. Hubzilla will provide its own handler for ".well-known" services when -it is installed, and an existing directory in this location may prevent some of -these services from working correctly. This should not be a problem with Apache, -but may be an issue with nginx or other web server platforms.

      - -

      Deployment

      - -

      There are several ways to deploy a new hub.

      - -
      • Manual installation on an existing server
      • -
      • Automated installation on an existing server using a shell script
      • -
      • Automated deployment using an OpenShift virtual private server (VPS)
      • -

      Requirements

      - -
      • Apache with mod-rewrite enabled and "AllowOverride All" so you can use a -local .htaccess file. Some folks have successfully used nginx and lighttpd. -Example config scripts are available for these platforms in doc/install. -Apache and nginx have the most support.

      • -
      • PHP 5.5 or later.

        - -
        • Note that on some shared hosting environments, the command line version of -PHP might differ from the webserver version
        • -
      • -
      • PHP command line access with register_argc_argv set to true in the -php.ini file * and with no hosting provider restrictions on the use of -exec() and proc_open().

      • -
      • curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt, -and openssl extensions. The imagick extension is not required but desirable.

      • -
      • xml extension is required if you want webdav to work.

      • -
      • some form of email server or email gateway such that PHP mail() works.

      • -
      • Mysql 5.x or MariaDB or postgres database server.

      • -
      • ability to schedule jobs with cron.

      • -
      • Installation into a top-level domain or sub-domain (without a -directory/path component in the URL) is REQUIRED.

      • -

      Manual Installation

      - -

      Unpack the Hubzilla files into the root of your web server document area

      - -

      If you copy the directory tree to your webserver, make sure that you include the -hidden files like .htaccess.

      - -

      If you are able to do so, we recommend using git to clone the source -repository rather than to use a packaged tar or zip file. This makes the -software much easier to update. The Linux command to clone the repository -into a directory "mywebsite" would be:

      - -
      git clone https://github.com/redmatrix/hubzilla.git mywebsite
      -
      - -

      and then you can pick up the latest changes at any time with:

      - -
      git pull
      -
      - -

      make sure folders store/[data]/smarty3 and store exist and are -writable by the webserver:

      - -
      mkdir -p "store/[data]/smarty3"
      -chmod -R 777 store
      -
      -This permission (777) is very dangerous and if you have sufficient
      -privilege and knowledge you should make these directories writeable
      -only by the webserver and, if different, the user that will run the
      -cron job (see below). In many shared hosting environments this may be
      -difficult without opening a trouble ticket with your provider. The
      -above permissions will allow the software to work, but are not
      -optimal.
      -
      - -

      The following directories also need to be writable by the webserver in order for certain -web-based administrative tools to function:

      - -
      • addon
      • -
      • extend
      • -
      • view/theme
      • -
      • widget
      • -

      Official addons

      - -

      Installation

      - -

      Navigate to your webThen you should clone the addon repository (separately). We'll give this repository a nickname of 'hzaddons'. You can pull in other hubzilla addon repositories by giving them different nicknames::

      - -
      cd mywebsite
      -util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
      -
      - -

      Updating

      - -

      For keeping the addon tree updated, you should be on your top level website directory and issue an update command for that repository::

      - -
      cd mywebsite
      -util/update_addon_repo hzaddons
      -
      - -

      Create searchable representations of the online documentation. You may do this - any time that the documentation is updated :

      - -
      cd mywebsite
      -util/importdoc
      -
      - -

      Automated installation via the .homeinstall shell script

      - -

      There is a shell script in (.homeinstall/hubzilla-setup.sh) that will install Hubzilla and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary.

      - -

      Requirements

      - -

      The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3:

      - -
      • Home-PC (Debian-8.3.0-amd64)

        - -
        • Internet connection and router at home
        • -
        • Mini-pc connected to your router
        • -
        • USB drive for backups
        • -
        • Fresh installation of Debian on your mini-pc
        • -
        • Router with open ports 80 and 443 for your Debian
        • -
      • -
      • DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3)

      • -

      Overview of installation steps

      - -
      1. apt-get install git
      2. -
      3. mkdir -p /var/www/html
      4. -
      5. cd /var/www/html
      6. -
      7. git clone https://github.com/redmatrix/hubzilla.git .
      8. -
      9. nano .homeinstall/hubzilla-config.txt
      10. -
      11. cd .homeinstall/
      12. -
      13. ./hubzilla-setup.sh
      14. -
      15. sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini
      16. -
      17. sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini
      18. -
      19. service apache2 reload
      20. -
      21. Open your domain with a browser and step throught the initial configuration of Hubzilla.
      22. -

      Service Classes

      - -

      Service classes allow you to set limits on system resources by limiting what individual -accounts can do, including file storage and top-level post limits. Define custom service -classes according to your needs in the .htconfig.php file. For example, create -a standard and premium class using the following lines:

      - -
      // Service classes
      -
      -App::$config['system']['default_service_class']='standard'; // this is the default service class that is attached to every new account
      -
      -// configuration for parent service class
      -App::$config['service_class']['standard'] =
      -array('photo_upload_limit'=>2097152, // total photo storage limit per channel (here 2MB)
      -'total_identities' =>1, // number of channels an account can create
      -'total_items' =>0, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected
      -'total_pages' =>100, // number of pages a channel can create
      -'total_channels' =>100, // number of channels the user can add, other users can still add this channel, even if the limit is reached
      -'attach_upload_limit' =>2097152, // total attachment storage limit per channel (here 2MB)
      -'chatters_inroom' =>20);
      -
      -// configuration for teacher service class
      -App::$config['service_class']['premium'] =
      -array('photo_upload_limit'=>20000000000, // total photo storage limit per channel (here 20GB)
      -'total_identities' =>20, // number of channels an account can create
      -'total_items' =>20000, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected
      -'total_pages' =>400, // number of pages a channel can create
      -'total_channels' =>2000, // number of channels the user can add, other users can still add this channel, even if the limit is reached
      -'attach_upload_limit' =>20000000000, // total attachment storage limit per channel (here 20GB)
      -'chatters_inroom' =>100);
      -
      - -

      To apply a service class to an existing account, use the command line utility from the -web root:

      - -

      util/service_class -list service classes

      - -

      util/config system default_service_class firstclass -set the default service class to 'firstclass'

      - -

      util/service_class firstclass -list the services that are part of 'firstclass' service class

      - -

      util/service_class firstclass photo_upload_limit 10000000 -set firstclass total photo disk usage to 10 million bytes

      - -

      util/service_class --account=5 firstclass -set account id 5 to service class 'firstclass' (with confirmation)

      - -

      util/service_class --channel=blogchan firstclass -set the account that owns channel 'blogchan' to service class 'firstclass' (with confirmation)

      - -

      Service class limit options

      - -
      • photo_upload_limit - maximum total bytes for photos
      • -
      • total_items - maximum total toplevel posts
      • -
      • total_pages - maximum comanche pages
      • -
      • total_identities - maximum number of channels owned by account
      • -
      • total_channels - maximum number of connections
      • -
      • total_feeds - maximum number of rss feed connections
      • -
      • attach_upload_limit - maximum file upload storage (bytes)
      • -
      • minimum_feedcheck_minutes - lowest setting allowed for polling rss feeds
      • -
      • chatrooms - maximum chatrooms
      • -
      • chatters_inroom - maximum chatters per room
      • -
      • access_tokens - maximum number of Guest Access Tokens per channel
      • -

      Theme management

      - -

      Repo management example

      - -
      1. Navigate to your hub web root

        - -

        root@hub:/root# cd /var/www

      2. -
      3. Add the theme repo and give it a name

        - -

        root@hub:/var/www# util/add_theme_repo https://github.com/DeadSuperHero/redmatrix-themes.git DeadSuperHero

      4. -
      5. Update the repo by using

        - -

        root@hub:/var/www# util/update_theme_repo DeadSuperHero

      6. -

      Channel Directory

      - -

      Keywords

      - -

      There is a "tag cloud" of keywords that can appear on the channel directory page. -If you wish to hide these keywords, which are drawn from the directory server, you -can use the config tool:

      - -
      util/config system disable_directory_keywords 1
      -
      - -

      If your hub is in the standalone mode because you do not wish to connect to the -global grid, you may instead ensure the the directory_server system option is -empty:

      - -
      util/config system directory_server ""
      -
      - -

      Upgrading from RedMatrix to Hubzilla

      - -

      How to migrate an individual channel from RedMatrix to Hubzilla

      - -
      1. Clone the channel by opening an account on a Hubzilla hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings.
      2. -
      3. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary.
      4. -
      5. Import the JSON data files sequentially in chronological order into the Hubzilla clone using the new.hub/import_items tool.
      6. -
      7. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address.
      8. -
      9. After successful import (check!) delete your channel on the old RedMatrix Server.
      10. -
      11. On the Hubzilla server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid.
      12. -

      Troubleshooting

      - -

      Log files

      - -

      Allow me to elaborate on logfiles...

      - -

      There are three different log facilities.

      - -

      The first is the database failure log. This is only used if you create a file called specifically 'dbfail.out' in the root folder of your website and make it write-able by the web server. If we have any database failed queries, they are all reported here. They generally indicate typos in our queries, but also occur if the database server disconnects or tables get corrupted. On rare occasions we'll see race conditions in here where two processes tried to create an xchan or cache entry with the same ID. Any other errors (especially persistent errors) should be investigated.

      - -

      The second is the PHP error log. This is created by the language processor and only reports issues in the language environment. Again these can be syntax errors or programming errors, but these generally are fatal and result in a "white screen of death"; e.g. PHP terminates. You should probably look at this file if something goes wrong that doesn't result in a white screen of death, but it isn't uncommon for this file to be empty for days on end.

      - -

      There are some lines at the bottom of the supplied .htconfig.php file; which if uncommented will enable a PHP error log (extremely useful for finding the source of white screen failures). This isn't done by default due to potential issues with logfile ownership and write permissions and the fact that there is no logfile rotation by default.

      - -

      The third is the "application log". This is used by Hubzilla to report what is going on in the program and usually reports any difficulties or unexpected data we received. It also occasionally reports "heartbeat" status messages to indicate that we reached a certain point in a script. This is the most important log file to us, as we create it ourself for the sole purpose of reporting the status of background tasks and anything that seems weird or out of place. It may not be fatal, but maybe just unexpected. If you're performing a task and there's a problem, let us know what is in this file when the problem occurred. (Please don't send me 100M dumps you'll only piss me off). Just a few relevant lines so I can rule out a few hundred thousand lines of code and concentrate on where the problem starts showing up.

      - -

      These are your site logs, not mine. We report serious issues at any log level. I highly recommend 'DEBUG' log level for most sites - which provides a bit of additional info and doesn't create huge logfiles. When there's a problem which defies all attempts to track, you might wish to use DATA log level for a short period of time to capture all the detail of what structures we were dealing with at the time. This log level will use a lot of space so is recommended only for brief periods or for developer test sites.

      - -

      I recommend configuring logrotate for both the php log and the application log. I usually have a look at dbfail.out every week or two, fix any issues reported and then starting over with a fresh file. Likewise with the PHP logfile. I refer to it once in a while to see if there's something that needs fixing.

      - -

      If something goes wrong, and it's not a fatal error, I look at the application logfile. Often I will -tail -f logfile.out

      - -

      While repeating an operation that has problems. Often I'll insert extra logging statements in the code if there isn't any hint what's going wrong. Even something as simple as "got here" or printing out the value of a variable that might be suspect. You can do this too - in fact I encourage you to do so. Once you've found what you need to find, you can

      - -

      git checkout file.php

      - -

      To immediately clear out all the extra logging stuff you added. Use the information from this log and any detail you can provide from your investigation of the problem to file your bug report - unless your analysis points to the source of the problem. In that case, just fix it.

      - -

      Rotating log files

      - -
      1. Enable the logrot addon in the official hubzilla-addons repo
      2. -
      3. Create a directory in your web root called log with webserver write permissions
      4. -
      5. Go to the logrot admin settings and enter this folder name as well as the max size and number of retained log files.
      6. -
      \ No newline at end of file diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md new file mode 100644 index 000000000..47592b58c --- /dev/null +++ b/doc/admin/administrator_guide.md @@ -0,0 +1,345 @@ + +# Overview + +Hubzilla is more than a simple web application. It is a +complex communications system which more closely resembles an email server +than a web server. For reliability and performance, messages are delivered in +the background and are queued for later delivery when sites are down. This +kind of functionality requires a bit more of the host system than the typical +blog. Not every PHP/MySQL hosting provider will be able to support +Hubzilla. Many will but please review the requirements and confirm these +with your hosting provider prior to installation. + +We've tried very hard to ensure that Hubzilla will run on commodity +hosting platforms such as those used to host Wordpress blogs and Drupal +websites. It will run on most any Linux VPS system. Windows LAMP platforms +such as XAMPP and WAMP are not officially supported at this time however +we welcome patches if you manage to get it working. + +# Where to find more help +If you encounter problems or have issues not addressed in this documentation, +please let us know via the [Github issue +tracker](https://github.com/redmatrix/hubzilla/issues). Please be as clear as you +can about your operating environment and provide as much detail as possible +about any error messages you may see, so that we can prevent it from happening +in the future. Due to the large variety of operating systems and PHP platforms +in existence we may have only limited ability to debug your PHP installation or +acquire any missing modules * but we will do our best to solve any general code +issues. + +# Before you begin + +## Choose a domain name or subdomain name for your server + +Hubzilla can only be installed into the root of a domain or sub-domain, and can +not be installed using alternate TCP ports. + +## Decide if you will use SSL and obtain an SSL certificate before software installation + +You SHOULD use SSL. If you use SSL, you MUST use a "browser-valid" certificate. +*You MUST NOT use self-signed certificates!* + +Please test your certificate prior to installation. A web tool for testing your +certificate is available at "http://www.digicert.com/help/". When visiting your +site for the first time, please use the SSL ("https://") URL if SSL is available. +This will avoid problems later. The installation routine will not allow you to +use a non browser-valid certificate. + + +This restriction is incorporated because public posts from you may contain +references to images on your own hub. Other members viewing their stream on +other hubs will get warnings if your certificate is not trusted by their web +browser. This will confuse many people because this is a decentralised network +and they will get the warning about your hub while viewing their own hub and may +think their own hub has an issue. These warnings are very technical and scary to +some folks, many of whom will not know how to proceed except to follow the browser +advice. This is disruptive to the community. That said, we recognise the issues +surrounding the current certificate infrastructure and agree there are many +problems, but that doesn't change the requirement. + +Free "browser-valid" certificates are available from providers such as StartSSL +and LetsEncrypt. + +If you do NOT use SSL, there may be a delay of up to a minute for the initial +install script * while we check the SSL port to see if anything responds there. +When communicating with new sites, Hubzilla always attempts connection on the +SSL port first, before falling back to a less secure connection. If you do not +use SSL, your webserver MUST NOT listen on port 443 at all. + +If you use LetsEncrypt to provide certificates and create a file under +.well-known/acme-challenge so that LetsEncrypt can verify your domain ownership, +please remove or rename the .well-known directory as soon as the certificate is +generated. Hubzilla will provide its own handler for ".well-known" services when +it is installed, and an existing directory in this location may prevent some of +these services from working correctly. This should not be a problem with Apache, +but may be an issue with nginx or other web server platforms. + +# Deployment +There are several ways to deploy a new hub. + +* Manual installation on an existing server +* Automated installation on an existing server using a shell script +* Automated deployment using an OpenShift virtual private server (VPS) + +# Requirements +* Apache with mod-rewrite enabled and "AllowOverride All" so you can use a + local .htaccess file. Some folks have successfully used nginx and lighttpd. + Example config scripts are available for these platforms in doc/install. + Apache and nginx have the most support. + +* PHP 5.5 or later. + * Note that on some shared hosting environments, the _command line_ version of +PHP might differ from the _webserver_ version + +* PHP *command line* access with register_argc_argv set to true in the + php.ini file * and with no hosting provider restrictions on the use of + exec() and proc_open(). + +* curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt, + and openssl extensions. The imagick extension is not required but desirable. + +* xml extension is required if you want webdav to work. + +* some form of email server or email gateway such that PHP mail() works. + +* Mysql 5.x or MariaDB or postgres database server. + +* ability to schedule jobs with cron. + +* Installation into a top-level domain or sub-domain (without a + directory/path component in the URL) is REQUIRED. + +# Manual Installation # + +## Unpack the Hubzilla files into the root of your web server document area ### +If you copy the directory tree to your webserver, make sure that you include the +hidden files like .htaccess. + +If you are able to do so, we recommend using git to clone the source +repository rather than to use a packaged tar or zip file. This makes the +software much easier to update. The Linux command to clone the repository +into a directory "mywebsite" would be: + + git clone https://github.com/redmatrix/hubzilla.git mywebsite + +and then you can pick up the latest changes at any time with: + + git pull + +make sure folders ``store/[data]/smarty3`` and ``store`` exist and are +writable by the webserver: + + mkdir -p "store/[data]/smarty3" + chmod -R 777 store + + This permission (777) is very dangerous and if you have sufficient + privilege and knowledge you should make these directories writeable + only by the webserver and, if different, the user that will run the + cron job (see below). In many shared hosting environments this may be + difficult without opening a trouble ticket with your provider. The + above permissions will allow the software to work, but are not + optimal. + +The following directories also need to be writable by the webserver in order for certain +web-based administrative tools to function: + +* `addon` +* `extend` +* `view/theme` +* `widget` + +## Official addons +### Installation +Navigate to your webThen you should clone the addon repository (separately). We'll give this repository a nickname of 'hzaddons'. You can pull in other hubzilla addon repositories by giving them different nicknames:: + + cd mywebsite + util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons + +### Updating +For keeping the addon tree updated, you should be on your top level website directory and issue an update command for that repository:: + + cd mywebsite + util/update_addon_repo hzaddons + +Create searchable representations of the online documentation. You may do this + any time that the documentation is updated : + + cd mywebsite + util/importdoc + +# Automated installation via the .homeinstall shell script +There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install Hubzilla and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary. + +## Requirements +The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3: + +* Home-PC (Debian-8.3.0-amd64) + + * Internet connection and router at home + * Mini-pc connected to your router + * USB drive for backups + * Fresh installation of Debian on your mini-pc + * Router with open ports 80 and 443 for your Debian + +* DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3) + +## Overview of installation steps +1. `apt-get install git` +1. `mkdir -p /var/www/html` +1. `cd /var/www/html` +1. `git clone https://github.com/redmatrix/hubzilla.git .` +1. `nano .homeinstall/hubzilla-config.txt` +1. `cd .homeinstall/` +1. `./hubzilla-setup.sh` +1. `sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini` +1. `sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini` +1. `service apache2 reload` +1. Open your domain with a browser and step throught the initial configuration of Hubzilla. + +# Service Classes + +Service classes allow you to set limits on system resources by limiting what individual +accounts can do, including file storage and top-level post limits. Define custom service +classes according to your needs in the `.htconfig.php` file. For example, create +a _standard_ and _premium_ class using the following lines: + + // Service classes + + App::$config['system']['default_service_class']='standard'; // this is the default service class that is attached to every new account + + // configuration for parent service class + App::$config['service_class']['standard'] = + array('photo_upload_limit'=>2097152, // total photo storage limit per channel (here 2MB) + 'total_identities' =>1, // number of channels an account can create + 'total_items' =>0, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected + 'total_pages' =>100, // number of pages a channel can create + 'total_channels' =>100, // number of channels the user can add, other users can still add this channel, even if the limit is reached + 'attach_upload_limit' =>2097152, // total attachment storage limit per channel (here 2MB) + 'chatters_inroom' =>20); + + // configuration for teacher service class + App::$config['service_class']['premium'] = + array('photo_upload_limit'=>20000000000, // total photo storage limit per channel (here 20GB) + 'total_identities' =>20, // number of channels an account can create + 'total_items' =>20000, // number of top level posts a channel can create. Applies only to top level posts of the channel user, other posts and comments are unaffected + 'total_pages' =>400, // number of pages a channel can create + 'total_channels' =>2000, // number of channels the user can add, other users can still add this channel, even if the limit is reached + 'attach_upload_limit' =>20000000000, // total attachment storage limit per channel (here 20GB) + 'chatters_inroom' =>100); + +To apply a service class to an existing account, use the command line utility from the +web root: + +`util/service_class` +list service classes + +`util/config system default_service_class firstclass` +set the default service class to 'firstclass' + +`util/service_class firstclass` +list the services that are part of 'firstclass' service class + +`util/service_class firstclass photo_upload_limit 10000000` +set firstclass total photo disk usage to 10 million bytes + +`util/service_class --account=5 firstclass` +set account id 5 to service class 'firstclass' (with confirmation) + +`util/service_class --channel=blogchan firstclass` +set the account that owns channel 'blogchan' to service class 'firstclass' (with confirmation) + +**Service class limit options** + +* photo_upload_limit - maximum total bytes for photos +* total_items - maximum total toplevel posts +* total_pages - maximum comanche pages +* total_identities - maximum number of channels owned by account +* total_channels - maximum number of connections +* total_feeds - maximum number of rss feed connections +* attach_upload_limit - maximum file upload storage (bytes) +* minimum_feedcheck_minutes - lowest setting allowed for polling rss feeds +* chatrooms - maximum chatrooms +* chatters_inroom - maximum chatters per room +* access_tokens - maximum number of Guest Access Tokens per channel + +# Theme management +## Repo management example +1. Navigate to your hub web root + + ``` + root@hub:/root# cd /var/www + ``` +2. Add the theme repo and give it a name + + ``` + root@hub:/var/www# util/add_theme_repo https://github.com/DeadSuperHero/redmatrix-themes.git DeadSuperHero + ``` +3. Update the repo by using + + ``` + root@hub:/var/www# util/update_theme_repo DeadSuperHero + ``` + +# Channel Directory + +## Keywords + +There is a "tag cloud" of keywords that can appear on the channel directory page. +If you wish to hide these keywords, which are drawn from the directory server, you +can use the *config* tool: + + util/config system disable_directory_keywords 1 + +If your hub is in the standalone mode because you do not wish to connect to the +global grid, you may instead ensure the the _directory_server_ system option is +empty: + + util/config system directory_server "" + +# Upgrading from RedMatrix to Hubzilla + +## How to migrate an individual channel from RedMatrix to Hubzilla + +1. Clone the channel by opening an account on a Hubzilla hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings. +1. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary. +1. Import the JSON data files sequentially in chronological order into the Hubzilla clone using the new.hub/import_items tool. +1. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address. +1. After successful import (check!) delete your channel on the old RedMatrix Server. +1. On the Hubzilla server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. + +# Troubleshooting +## Log files + +There are three different log facilities. + +**The first is the database failure log**. This is only used if you create a file called specifically 'dbfail.out' in the root folder of your website and make it write-able by the web server. If we have any database failed queries, they are all reported here. They generally indicate typos in our queries, but also occur if the database server disconnects or tables get corrupted. On rare occasions we'll see race conditions in here where two processes tried to create an xchan or cache entry with the same ID. Any other errors (especially persistent errors) should be investigated. + +**The second is the PHP error log**. This is created by the language processor and only reports issues in the language environment. Again these can be syntax errors or programming errors, but these generally are fatal and result in a "white screen of death"; e.g. PHP terminates. You should probably look at this file if something goes wrong that doesn't result in a white screen of death, but it isn't uncommon for this file to be empty for days on end. + +There are some lines at the bottom of the supplied .htconfig.php file; which if uncommented will enable a PHP error log (*extremely* useful for finding the source of white screen failures). This isn't done by default due to potential issues with logfile ownership and write permissions and the fact that there is no logfile rotation by default. + + +**The third is the "application log"**. This is used by Hubzilla to report what is going on in the program and usually reports any difficulties or unexpected data we received. It also occasionally reports "heartbeat" status messages to indicate that we reached a certain point in a script. **This** is the most important log file to us, as we create it ourself for the sole purpose of reporting the status of background tasks and anything that seems weird or out of place. It may not be fatal, but maybe just unexpected. If you're performing a task and there's a problem, let us know what is in this file when the problem occurred. (Please don't send me 100M dumps you'll only piss me off). Just a few relevant lines so I can rule out a few hundred thousand lines of code and concentrate on where the problem starts showing up. + +These are your site logs, not mine. We report serious issues at any log level. I highly recommend 'DEBUG' log level for most sites - which provides a bit of additional info and doesn't create huge logfiles. When there's a problem which defies all attempts to track, you might wish to use DATA log level for a short period of time to capture all the detail of what structures we were dealing with at the time. This log level will use a lot of space so is recommended only for brief periods or for developer test sites. + +I recommend configuring logrotate for both the php log and the application log. I usually have a look at dbfail.out every week or two, fix any issues reported and then starting over with a fresh file. Likewise with the PHP logfile. I refer to it once in a while to see if there's something that needs fixing. + +If something goes wrong, and it's not a fatal error, I look at the application logfile. Often I will +``` +tail -f logfile.out +``` + +While repeating an operation that has problems. Often I'll insert extra logging statements in the code if there isn't any hint what's going wrong. Even something as simple as "got here" or printing out the value of a variable that might be suspect. You can do this too - in fact I encourage you to do so. Once you've found what you need to find, you can + +``` +git checkout file.php +``` + +To immediately clear out all the extra logging stuff you added. Use the information from this log and any detail you can provide from your investigation of the problem to file your bug report - unless your analysis points to the source of the problem. In that case, just fix it. + +### Rotating log files + +1. Enable the **logrot** addon in the official [hubzilla-addons](https://github.com/redmatrix/hubzilla-addons) repo +1. Create a directory in your web root called `log` with webserver write permissions +1. Go to the **logrot** admin settings and enter this folder name as well as the max size and number of retained log files. \ No newline at end of file diff --git a/doc/developer/developer_guide.html b/doc/developer/developer_guide.html deleted file mode 100644 index 77d622221..000000000 --- a/doc/developer/developer_guide.html +++ /dev/null @@ -1,470 +0,0 @@ -

      Who is a Hubzilla developer? Should I read this?

      - -

      Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, even if you do not know how to write code. The software itself is only a part of the Hubzilla project. You can contribute by

      - -
      • translating text to your language so that people around the world have the opportunity to use Hubzilla
      • -
      • promoting Hubzilla and spreading awareness of the platform through blog posts, articles, and word-of-mouth
      • -
      • creating artwork and graphics for project assets such as icons and marketing material
      • -
      • supporting project infrastructure like the project website and demo servers
      • -

      Software developers are of course welcomed; there are so many great ideas to implement and not enough people to make them all a reality! The Hubzilla code base is an advanced and mature system, but the platform is still very flexible and responsive to new ideas.

      - -

      This document will help you get started learning and contributing to Hubzilla.

      - -

      Versioning system

      - -

      The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control.

      - -

      Git repository branches

      - -

      There are two official branches of the Hubzilla git repo.

      - -
      • The stable version is maintained on the master branch. The latest commit in this branch is considered to be suitable for production hubs.
      • -
      • Experimental development occurs on the dev branch, which is merged into master when it is deemed tested and stable enough.
      • -

      Developer tools and workflows

      - -

      Hub Snapshots

      - -

      The Hub Snapshots page provides instructions and scripts for taking complete -snapshots of a hub to support switching between consistent and completely known -states. This is useful to prevent situations where the content or database schema -might be incompatible with the code.

      - -

      Translations

      - -

      Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit https://www.transifex.com/projects/p/red-matrix/ and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files.

      - -

      Translation Process

      - -

      The strings used in the UI of Hubzilla is translated at [Transifex][1] and then -included in the git repository at github. If you want to help with translation -for any language, be it correcting terms or translating Hubzilla to a -currently not supported language, please register an account at transifex.com -and contact the Redmatrix translation team there.

      - -

      Translating Hubzilla is simple. Just use the online tool at transifex. If you -don't want to deal with git & co. that is fine, we check the status of the -translations regularly and import them into the source tree at github so that -others can use them.

      - -

      We do not include every translation from transifex in the source tree to avoid -a scattered and disturbed overall experience. As an uneducated guess we have a -lower limit of 50% translated strings before we include the language. This -limit is judging only by the amount of translated strings under the assumption -that the most prominent strings for the UI will be translated first by a -translation team. If you feel your translation useable before this limit, -please contact us and we will probably include your teams work in the source -tree.

      - -

      If you want to get your work into the source tree yourself, feel free to do so -and contact us with and question that arises. The process is simple and -Hubzilla ships with all the tools necessary.

      - -

      The location of the translated files in the source tree is - /view/LNG-CODE/ -where LNG-CODE is the language code used, e.g. de for German or fr for French. -For the email templates (the *.tpl files) just place them into the directory -and you are done. The translated strings come as a "hmessages.po" file from -transifex which needs to be translated into the PHP file Hubzilla uses. To do -so, place the file in the directory mentioned above and use the "po2php" -utility from the util directory of your Hubzilla installation.

      - -

      Assuming you want to convert the German localization which is placed in -view/de/hmessages.po you would do the following.

      - -
      1. Navigate at the command prompt to the base directory of your -Hubzilla installation

      2. -
      3. Execute the po2php script, which will place the translation -in the hstrings.php file that is used by Hubzilla.

        - -

        $> php util/po2php.php view/de/hmessages.po

        - -

        The output of the script will be placed at view/de/hstrings.php where -froemdoca os expecting it, so you can test your translation mmediately.

      4. -
      5. Visit your Hubzilla page to check if it still works in the language you -just translated. If not try to find the error, most likely PHP will give -you a hint in the log/warnings.about the error.

        - -

        For debugging you can also try to "run" the file with PHP. This should -not give any output if the file is ok but might give a hint for -searching the bug in the file.

        - -

        $> php view/de/hstrings.php

      6. -
      7. commit the two files with a meaningful commit message to your git -repository, push it to your fork of the Hubzilla repository at github and -issue a pull request for that commit.

      8. -

      Utilities

      - -

      Additional to the po2php script there are some more utilities for translation -in the "util" directory of the Hubzilla source tree. If you only want to -translate Hubzilla into another language you wont need any of these tools most -likely but it gives you an idea how the translation process of Hubzilla -works.

      - -

      For further information see the utils/README file.

      - -

      Known Problems

      - -
      • Hubzilla uses the language setting of the visitors browser to determain the -language for the UI. Most of the time this works, but there are some known -quirks.
      • -
      • the early translations are based on the friendica translations, if you -some rough translations please let us know or fix them at Transifex.
      • -

      To-be-organized information

      - -

      Here is how you can join us.

      - -

      First, get yourself a working git package on the system where you will be -doing development.

      - -

      Create your own github account.

      - -

      You may fork/clone the Red repository from https://github.com/redmatrix/hubzilla.git.

      - -

      Follow the instructions provided here: http://help.github.com/fork-a-repo/ -to create and use your own tracking fork on github

      - -

      Then go to your github page and create a "Pull request" when you are ready -to notify us to merge your work.

      - -

      Important

      - -

      Please pull in any changes from the project repository and merge them with your work before issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.

      - -

      Also - test your changes. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code.

      - -

      Licensing

      - -

      All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything.

      - -

      Coding Style

      - -

      In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future.

      - -
      • All comments should be in English.

      • -
      • We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged.

      • -
      • Indentation is accomplished primarily with tabs using a tab-width of 4.

      • -
      • String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';"

      • -
      • Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes.

      • -
      • Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability.

      • -
      • Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves.

      • -

      File system layout:

      - -

      [addon] optional addons/plugins

      - -

      [boot.php] Every process uses this to bootstrap the application structure

      - -

      [doc] Help Files

      - -

      [images] core required images

      - -

      [include] The "model" in MVC - (back-end functions), also contains PHP "executables" for background processing

      - -

      [index.php] The front-end controller for web access

      - -

      [install] Installation and upgrade files and DB schema

      - -

      [library] Third party modules (must be license compatible)

      - -

      [mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php)

      - -

      [mod/site/] site-specific mod overrides, excluded from git

      - -

      [util] translation tools, main English string database and other miscellaneous utilities

      - -

      [version.inc] contains current version (auto-updated via cron for the master repository and distributed via git)

      - -

      [view] theming and language files

      - -

      [view/(css,js,img,php,tpl)] default theme files

      - -

      [view/(en,it,es ...)] language strings and resources

      - -

      [view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides

      - -

      The Database:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      TableDescription
      abconfigcontact table, replaces Friendica 'contact'
      abook
      accountservice provider account
      addon
      addressbookchanges
      addressbooks
      app
      atoken
      attach
      auth_codes
      cache
      cal
      calendarchanges
      calendarinstances
      calendarobjects
      calendars
      calendarsubscriptions
      cards
      channel
      chat
      chatpresence
      chatroom
      clients
      config
      conv
      dreport
      event
      group_member
      groupmembers
      groups
      hook
      hubloc
      iconfig
      issue
      item
      item_id
      likes
      locks
      mail
      menu
      menu_item
      notify
      obj
      outq
      pconfigpersonal (per channel) configuration storage
      photo
      poll
      poll_elm
      principals
      profdef
      profext
      profile
      profile_check
      propertystorage
      register
      schedulingobjects
      session
      shares
      sign
      site
      source
      sys_perms
      term
      tokens
      updates
      users
      verify
      vote
      xchan
      xchat
      xconfig
      xign
      xlink
      xperm
      xprof
      xtag
      * abook - contact table, replaces Friendica 'contact'
      -* account - service provider account
      -* addon - registered plugins
      -* app - peronal app data
      -* attach - file attachments
      -* auth_codes - OAuth usage
      -* cache - OEmbed cache
      -* channel - replaces Friendica 'user'
      -* chat - chat room content
      -* chatpresence - channel presence information for chat
      -* chatroom - data for the actual chat room
      -* clients - OAuth usage
      -* config - main configuration storage
      -* conv - Diaspora private messages
      -* event - Events
      -* fcontact - friend suggestion stuff
      -* ffinder - friend suggestion stuff
      -* fserver - obsolete
      -* fsuggest - friend suggestion stuff
      -* groups - privacy groups
      -* group_member - privacy groups
      -* hook - plugin hook registry
      -* hubloc - Red location storage, ties a location to an xchan
      -* item - posts
      -* item_id - other identifiers on other services for posts
      -* likes - likes of 'things'
      -* mail - private messages
      -* menu - channel menu data
      -* menu_item - items uses by channel menus
      -* notify - notifications
      -* notify-threads - need to factor this out and use item thread info on notifications
      -* obj - object data for things (x has y)
      -* outq - output queue
      -* pconfig - personal (per channel) configuration storage
      -* photo - photo storage
      -* poll - data for polls
      -* poll_elm - data for poll elements
      -* profdef - custom profile field definitions
      -* profext - custom profile field data
      -* profile - channel profiles
      -* profile_check - DFRN remote auth use, may be obsolete
      -* register - registrations requiring admin approval
      -* session - web session storage
      -* shares - shared item information
      -* sign - Diaspora signatures.  To be phased out.
      -* site - site table to find directory peers
      -* source - channel sources data
      -* spam - unfinished
      -* sys_perms - extensible permissions for the sys channel
      -* term - item taxonomy (categories, tags, etc.) table
      -* tokens - OAuth usage
      -* updates - directory sync updates
      -* verify - general purpose verification structure
      -* vote - vote data for polls
      -* xchan - replaces 'gcontact', list of known channels in the universe
      -* xchat - bookmarked chat rooms
      -* xconfig - as pconfig but for channels with no local account
      -* xlink - "friends of friends" linkages derived from poco
      -* xprof - if this hub is a directory server, contains basic public profile info of everybody in the network
      -* xtag - if this hub is a directory server, contains tags or interests of everybody in the network
      -
      - -

      How to theme Hubzilla

      - -

      This is a short documentation on what I found while trying to modify Hubzilla's appearance.

      - -

      First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it .

      - -

      Oh, and don't forget to rename the _init function in /php/theme.php to be _init() instead of redbasic_init().

      - -

      At that point, if you need to add javascript or css files, add them to /js or /css, and then "register" them in _init() through head_add_js('file.js') and head_add_css('file.css').

      - -

      Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory.

      - -

      We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine.

      - -

      Here is how you can join us.

      - -

      First, get yourself a working git package on the system where you will be -doing development.

      - -

      Create your own github account.

      - -

      You may fork/clone the Red repository from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url]

      - -

      Follow the instructions provided here: [url=http://help.github.com/fork-a-repo/]http://help.github.com/fork-a-repo/[/url] -to create and use your own tracking fork on github

      - -

      Then go to your github page and create a "Pull request" when you are ready -to notify us to merge your work.

      - -

      Translations

      - -

      Our translations are managed through Transifex. If you wish to help out translating the $Projectname to another language, sign up on transifex.com, visit [url=https://www.transifex.com/projects/p/red-matrix/]https://www.transifex.com/projects/p/red-matrix/[/url] and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files.

      - -

      Important

      - -

      Please pull in any changes from the project repository and merge them with your work before issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.

      - -

      Also - test your changes. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code.

      - -

      Further documentation can be found at the Github wiki pages at: [url=https://github.com/friendica/red/wiki]https://github.com/friendica/red/wiki[/url]

      - -

      Licensing

      - -

      All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything.

      - -

      Concensus Building

      - -

      Code changes which fix an obvious bug are pretty straight-forward. For instance if you click "Save" and the thing you're trying to save isn't saved, it's fairly obvious what the intended behaviour should be. Often when developing feature requests, it may affect large numbers of community members and it's possible that other members of the community won't agree with the need for the feature, or with your proposed implementation. They may not see something as a bug or a desirable feature.

      - -

      We encourage consensus building within the community when it comes to any feature which might be considered controversial or where there isn't unanimous decision that the proposed feature is the correct way to accomplish the task. The first place to pitch your ideas is to [url=https://zothub.com/channel/one]Channel One[/url]. Others may have some input or be able to point out facets of your concept which might be problematic in our environment. But also, you may encounter opposition to your plan. This doesn't mean you should stop and/or ignore the feature. Listen to the concerns of others and try and work through any implementation issues.

      - -

      There are places where opposition cannot be resolved. In these cases, please consider making your feature optional or non-default behaviour that must be specifically enabled. This technique can often be used when a feature has significant but less than unanimous support. Those who desire the feature can turn it on and those who don't want it - will leave it turned off.

      - -

      If a feature uses other networks or websites and or is only seen as desirable by a small minority of the community, consider making the functionality available via an addon or plugin. Once again, those who don't desire the feature won't need to install it. Plugins are relatively easy to create and "hooks" can be easily added or modified if the current hooks do not do what is needed to allow your plugin to work.

      - -

      Coding Style

      - -

      In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future.

      - -
      • All comments should be in English.

      • -
      • We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged.

      • -
      • Indentation is accomplished primarily with tabs using a tab-width of 4.

      • -
      • String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';"

      • -
      • Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes.

      • -
      • Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability.

      • -
      • Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves.

      • -
      • Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home".

      • -
      - \ No newline at end of file diff --git a/doc/developer/developer_guide.md b/doc/developer/developer_guide.md new file mode 100644 index 000000000..3c0f7294d --- /dev/null +++ b/doc/developer/developer_guide.md @@ -0,0 +1,422 @@ +## Who is a Hubzilla developer? Should I read this? + +Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, _even if you do not know how to write code_. The software itself is only a part of the Hubzilla project. You can contribute by + +* translating text to your language so that people around the world have the opportunity to use Hubzilla +* promoting Hubzilla and spreading awareness of the platform through blog posts, articles, and word-of-mouth +* creating artwork and graphics for project assets such as icons and marketing material +* supporting project infrastructure like the project website and demo servers + +_Software_ developers are of course welcomed; there are so many great ideas to implement and not enough people to make them all a reality! The Hubzilla code base is an advanced and mature system, but the platform is still very flexible and responsive to new ideas. + +This document will help you get started learning and contributing to Hubzilla. + +## Versioning system + +The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control. + +## Git repository branches + +There are two official branches of the Hubzilla git repo. + +* The stable version is maintained on the **master** branch. The latest commit in this branch is considered to be suitable for production hubs. +* Experimental development occurs on the **dev** branch, which is merged into **master** when it is deemed tested and stable enough. + +## Developer tools and workflows + +### Hub Snapshots + +The [[Hub Snapshots]] page provides instructions and scripts for taking complete +snapshots of a hub to support switching between consistent and completely known +states. This is useful to prevent situations where the content or database schema +might be incompatible with the code. + +## Translations + +Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit [https://www.transifex.com/projects/p/red-matrix/](https://www.transifex.com/projects/p/red-matrix/) and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. + +### Translation Process + +The strings used in the UI of Hubzilla is translated at [Transifex][1] and then +included in the git repository at github. If you want to help with translation +for any language, be it correcting terms or translating Hubzilla to a +currently not supported language, please register an account at transifex.com +and contact the Redmatrix translation team there. + +Translating Hubzilla is simple. Just use the online tool at transifex. If you +don't want to deal with git & co. that is fine, we check the status of the +translations regularly and import them into the source tree at github so that +others can use them. + +We do not include every translation from transifex in the source tree to avoid +a scattered and disturbed overall experience. As an uneducated guess we have a +lower limit of 50% translated strings before we include the language. This +limit is judging only by the amount of translated strings under the assumption +that the most prominent strings for the UI will be translated first by a +translation team. If you feel your translation useable before this limit, +please contact us and we will probably include your teams work in the source +tree. + +If you want to get your work into the source tree yourself, feel free to do so +and contact us with and question that arises. The process is simple and +Hubzilla ships with all the tools necessary. + +The location of the translated files in the source tree is + /view/LNG-CODE/ +where LNG-CODE is the language code used, e.g. de for German or fr for French. +For the email templates (the *.tpl files) just place them into the directory +and you are done. The translated strings come as a "hmessages.po" file from +transifex which needs to be translated into the PHP file Hubzilla uses. To do +so, place the file in the directory mentioned above and use the "po2php" +utility from the util directory of your Hubzilla installation. + +Assuming you want to convert the German localization which is placed in +view/de/hmessages.po you would do the following. + +1. Navigate at the command prompt to the base directory of your + Hubzilla installation + +2. Execute the po2php script, which will place the translation + in the hstrings.php file that is used by Hubzilla. + + $> php util/po2php.php view/de/hmessages.po + + The output of the script will be placed at view/de/hstrings.php where + froemdoca os expecting it, so you can test your translation mmediately. + +3. Visit your Hubzilla page to check if it still works in the language you + just translated. If not try to find the error, most likely PHP will give + you a hint in the log/warnings.about the error. + + For debugging you can also try to "run" the file with PHP. This should + not give any output if the file is ok but might give a hint for + searching the bug in the file. + + $> php view/de/hstrings.php + +4. commit the two files with a meaningful commit message to your git + repository, push it to your fork of the Hubzilla repository at github and + issue a pull request for that commit. + +### Utilities + +Additional to the po2php script there are some more utilities for translation +in the "util" directory of the Hubzilla source tree. If you only want to +translate Hubzilla into another language you wont need any of these tools most +likely but it gives you an idea how the translation process of Hubzilla +works. + +For further information see the utils/README file. + +### Known Problems + +* Hubzilla uses the language setting of the visitors browser to determain the + language for the UI. Most of the time this works, but there are some known + quirks. +* the early translations are based on the friendica translations, if you + some rough translations please let us know or fix them at Transifex. + +## To-be-organized information + +**Here is how you can join us.** + +First, get yourself a working git package on the system where you will be +doing development. + +Create your own github account. + +You may fork/clone the Red repository from [https://github.com/redmatrix/hubzilla.git](https://github.com/redmatrix/hubzilla.git). + +Follow the instructions provided here: [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/) +to create and use your own tracking fork on github + +Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work. + + +**Important** + +Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. + +Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. + + +**Licensing** + +All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. + +**Coding Style** + +In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. + +* All comments should be in English. + +* We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. + +* Indentation is accomplished primarily with tabs using a tab-width of 4. + +* String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" + +* Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. + +* Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. + +* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. + + +**File system layout:** + +[addon] optional addons/plugins + +[boot.php] Every process uses this to bootstrap the application structure + +[doc] Help Files + +[images] core required images + +[include] The "model" in MVC - (back-end functions), also contains PHP "executables" for background processing + +[index.php] The front-end controller for web access + +[install] Installation and upgrade files and DB schema + +[library] Third party modules (must be license compatible) + +[mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php) + +[mod/site/] site-specific mod overrides, excluded from git + +[util] translation tools, main English string database and other miscellaneous utilities + +[version.inc] contains current version (auto-updated via cron for the master repository and distributed via git) + +[view] theming and language files + +[view/(css,js,img,php,tpl)] default theme files + +[view/(en,it,es ...)] language strings and resources + +[view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides + +**The Database:** + + +| Table | Description | +|-------------------------|--------------------------------------------------------| +| abconfig | contact table, replaces Friendica 'contact' | +| abook | | +| account | service provider account | +| addon | | +| addressbookchanges | | +| addressbooks | | +| app | | +| atoken | | +| attach | | +| auth_codes | | +| cache | | +| cal | | +| calendarchanges | | +| calendarinstances | | +| calendarobjects | | +| calendars | | +| calendarsubscriptions | | +| cards | | +| channel | | +| chat | | +| chatpresence | | +| chatroom | | +| clients | | +| config | | +| conv | | +| dreport | | +| event | | +| group_member | | +| groupmembers | | +| groups | | +| hook | | +| hubloc | | +| iconfig | | +| issue | | +| item | | +| item_id | | +| likes | | +| locks | | +| mail | | +| menu | | +| menu_item | | +| notify | | +| obj | | +| outq | | +| pconfig | personal (per channel) configuration storage | +| photo | | +| poll | | +| poll_elm | | +| principals | | +| profdef | | +| profext | | +| profile | | +| profile_check | | +| propertystorage | | +| register | | +| schedulingobjects | | +| session | | +| shares | | +| sign | | +| site | | +| source | | +| sys_perms | | +| term | | +| tokens | | +| updates | | +| users | | +| verify | | +| vote | | +| xchan | | +| xchat | | +| xconfig | | +| xign | | +| xlink | | +| xperm | | +| xprof | | +| xtag | | + + + * abook - contact table, replaces Friendica 'contact' + * account - service provider account + * addon - registered plugins + * app - peronal app data + * attach - file attachments + * auth_codes - OAuth usage + * cache - OEmbed cache + * channel - replaces Friendica 'user' + * chat - chat room content + * chatpresence - channel presence information for chat + * chatroom - data for the actual chat room + * clients - OAuth usage + * config - main configuration storage + * conv - Diaspora private messages + * event - Events + * fcontact - friend suggestion stuff + * ffinder - friend suggestion stuff + * fserver - obsolete + * fsuggest - friend suggestion stuff + * groups - privacy groups + * group_member - privacy groups + * hook - plugin hook registry + * hubloc - Red location storage, ties a location to an xchan + * item - posts + * item_id - other identifiers on other services for posts + * likes - likes of 'things' + * mail - private messages + * menu - channel menu data + * menu_item - items uses by channel menus + * notify - notifications + * notify-threads - need to factor this out and use item thread info on notifications + * obj - object data for things (x has y) + * outq - output queue + * pconfig - personal (per channel) configuration storage + * photo - photo storage + * poll - data for polls + * poll_elm - data for poll elements + * profdef - custom profile field definitions + * profext - custom profile field data + * profile - channel profiles + * profile_check - DFRN remote auth use, may be obsolete + * register - registrations requiring admin approval + * session - web session storage + * shares - shared item information + * sign - Diaspora signatures. To be phased out. + * site - site table to find directory peers + * source - channel sources data + * spam - unfinished + * sys_perms - extensible permissions for the sys channel + * term - item taxonomy (categories, tags, etc.) table + * tokens - OAuth usage + * updates - directory sync updates + * verify - general purpose verification structure + * vote - vote data for polls + * xchan - replaces 'gcontact', list of known channels in the universe + * xchat - bookmarked chat rooms + * xconfig - as pconfig but for channels with no local account + * xlink - "friends of friends" linkages derived from poco + * xprof - if this hub is a directory server, contains basic public profile info of everybody in the network + * xtag - if this hub is a directory server, contains tags or interests of everybody in the network + + +**How to theme Hubzilla** + +This is a short documentation on what I found while trying to modify Hubzilla's appearance. + +First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it . + +Oh, and don't forget to rename the _init function in /php/theme.php to be _init() instead of redbasic_init(). + +At that point, if you need to add javascript or css files, add them to /js or /css, and then "register" them in _init() through head_add_js('file.js') and head_add_css('file.css'). + +Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory. + + +We're pretty relaxed when it comes to developers. We don't have a lot of rules. Some of us are over-worked and if you want to help we're happy to let you help. That said, attention to a few guidelines will make the process smoother and make it easier to work together. We have developers from across the globe with different abilities and different cultural backgrounds and different levels of patience. Our primary rule is to respect others. Sometimes this is hard and sometimes we have very different opinions of how things should work, but if everybody makes an effort, we'll get along just fine. + +**Here is how you can join us.** + +First, get yourself a working git package on the system where you will be +doing development. + +Create your own github account. + +You may fork/clone the Red repository from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] + +Follow the instructions provided here: [url=http://help.github.com/fork-a-repo/]http://help.github.com/fork-a-repo/[/url] +to create and use your own tracking fork on github + +Then go to your github page and create a "Pull request" when you are ready +to notify us to merge your work. + +**Translations** + +Our translations are managed through Transifex. If you wish to help out translating the $Projectname to another language, sign up on transifex.com, visit [url=https://www.transifex.com/projects/p/red-matrix/]https://www.transifex.com/projects/p/red-matrix/[/url] and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. + + +**Important** + +Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions. + +Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Red developer to review the code. + +Further documentation can be found at the Github wiki pages at: [url=https://github.com/friendica/red/wiki]https://github.com/friendica/red/wiki[/url] + +**Licensing** + +All code contributed to the project falls under the MIT license, unless otherwise specified. We will accept third-party code which falls under MIT, BSD and LGPL, but copyleft licensing (GPL, and AGPL) is only permitted in addons. It must be possible to completely remove the GPL (copyleft) code from the main project without breaking anything. + +**Concensus Building** + +Code changes which fix an obvious bug are pretty straight-forward. For instance if you click "Save" and the thing you're trying to save isn't saved, it's fairly obvious what the intended behaviour should be. Often when developing feature requests, it may affect large numbers of community members and it's possible that other members of the community won't agree with the need for the feature, or with your proposed implementation. They may not see something as a bug or a desirable feature. + +We encourage consensus building within the community when it comes to any feature which might be considered controversial or where there isn't unanimous decision that the proposed feature is the correct way to accomplish the task. The first place to pitch your ideas is to [url=https://zothub.com/channel/one]Channel One[/url]. Others may have some input or be able to point out facets of your concept which might be problematic in our environment. But also, you may encounter opposition to your plan. This doesn't mean you should stop and/or ignore the feature. Listen to the concerns of others and try and work through any implementation issues. + +There are places where opposition cannot be resolved. In these cases, please consider making your feature **optional** or non-default behaviour that must be specifically enabled. This technique can often be used when a feature has significant but less than unanimous support. Those who desire the feature can turn it on and those who don't want it - will leave it turned off. + +If a feature uses other networks or websites and or is only seen as desirable by a small minority of the community, consider making the functionality available via an addon or plugin. Once again, those who don't desire the feature won't need to install it. Plugins are relatively easy to create and "hooks" can be easily added or modified if the current hooks do not do what is needed to allow your plugin to work. + + +**Coding Style** + +In the interests of consistency we adopt the following code styling. We may accept patches using other styles, but where possible please try to provide a consistent code style. We aren't going to argue or debate the merits of this style, and it is irrelevant what project 'xyz' uses. This is not project 'xyz'. This is a baseline to try and keep the code readable now and in the future. + +* All comments should be in English. + +* We use doxygen to generate documentation. This hasn't been consistently applied, but learning it and using it are highly encouraged. + +* Indentation is accomplished primarily with tabs using a tab-width of 4. + +* String concatenation and operators should be separated by whitespace. e.g. "$foo = $bar . 'abc';" instead of "$foo=$bar.'abc';" + +* Generally speaking, we use single quotes for string variables and double quotes for SQL statements. "Here documents" should be avoided. Sometimes using double quoted strings with variable replacement is the most efficient means of creating the string. In most cases, you should be using single quotes. + +* Use whitespace liberally to enhance readability. When creating arrays with many elements, we will often set one key/value pair per line, indented from the parent line appropriately. Lining up the assignment operators takes a bit more work, but also increases readability. + +* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. + +* Some functions take arguments in argc/argv style like main() in C or function args in bash or Perl. Urls are broken up within a module. e.g, given "http://example.com/module/arg1/arg2", then $this->argc will be 3 (integer) and $this->argv will contain: [0] => 'module', [1] => 'arg1', [2] => 'arg2'. There will always be one argument. If provided a naked domain URL, $this->argv[0] is set to "home". \ No newline at end of file diff --git a/doc/member/member_faq.bb b/doc/member/member_faq.bb new file mode 100644 index 000000000..bb70dc4d9 --- /dev/null +++ b/doc/member/member_faq.bb @@ -0,0 +1,10 @@ +[h1]$Projectname FAQ[/h1] +[h2]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h2] +Short anser: No, there isn't. There are reasons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other $Projectname servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to $Projectname posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it. +If a posting is public this is even harder, as $Projectname is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post. +[h2]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h2] +Posts and photos/files are provided separately from the channel basic information. This is due to memory limitations dealing with years of conversations and photo archives. Posts and conversations can be synced separately from the basic channel information. Photos and file archives can be transferred using a plugin tool such as 'redfiles', which is currently listed as "experimental". When creating this feature we thought that keeping all your contacts was the most important task. Your friends have already seen your old content. Posts/conversations were next in priority and these may now be synced. Files and photos are the last bit to get completely working. Once we find someone willing to finish implementing this, it will be done. :) +[h2]I can't see private resources[/h2] +You have probably disabled third party cookies. You need to enable them for remote authentication to work. +[h2]There are a lot of foreign language posts. Let's auto-translate them.[/h2] +There are also a lot of [b]private[/b] foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called [b][i]Apertium[/i][/b] which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen. diff --git a/doc/member/member_faq.html b/doc/member/member_faq.html deleted file mode 100644 index fa124c1b1..000000000 --- a/doc/member/member_faq.html +++ /dev/null @@ -1,19 +0,0 @@ -

      Frequently Asked Questions

      - - - -
      - -

      I am able to edit a post's text after I saved it, but is there a way to change the permissions?

      -
      Short answer: No, there isn't. There are reasons. You are able to change permissions to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other Hubzilla servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to Hubzilla posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it.
      If a posting is public this is even harder, as Hubzilla is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post.

      -

      I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???

      -
      Posts and photos/files are provided separately from the channel basic information. This is due to memory limitations dealing with years of conversations and photo archives. Posts and conversations can be synced separately from the basic channel information. Photos and file archives can be transferred using a plugin tool such as 'redfiles', which is currently listed as "experimental".  When creating this feature we thought that keeping all your contacts was the most important task. Your friends have already seen your old content. Posts/conversations were next in priority and these may now be synced. Files and photos are the last bit to get completely working. Once we find someone willing to finish implementing this, it will be done. :)
      -

      I can't see private resources

      -
      You have probably disabled third party cookies.  You need to enable them for remote authentication to work.
      -

      There are a lot of foreign language posts. Let's auto-translate them.

      -
      There are also a lot of private foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called Apertium which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen. diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb new file mode 100644 index 000000000..9824de390 --- /dev/null +++ b/doc/member/member_guide.bb @@ -0,0 +1,362 @@ +[h1]Overview[/h1] + +While many features and capabilities of $Projectname are familiar to people who have used social networking sites and blogging software, there are also quite a few new concepts and features that most people have not encountered before. Some of the new ideas are related to the decentralized nature of the grid; others are associated with the advanced permissions system that is necessary to protect your data privacy. The purpose of this guide is to help you understand how to create, configure, and use your nomadic identity. + +[h1]Registration[/h1] + +Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides. + +[b]Your Email Address[/b] + +Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [i]and to recover lost passwords[/i]. + +[b]Password[/b] + +Enter a password of your choice, and repeat it in the second box to ensure it was typed correctly. As $Projectname offers a decentralised identity, your account can log you in to many other websites. + +[b]Terms Of Service[/b] + +Click the link to read the site's [zrl=[baseurl]/help/TermsOfService]Terms of Service[/zrl]. Once you've read them, tick the box in the register form to confirm. + +[b]Register[/b] + +Once you have provided the necessary details, click the 'Register' button. Some sites may require administrator approval before the registration is processed, and you will be alerted if this is the case. Please watch your email (including spam folders) for your registration approval. + +[b]Create a Channel[/b] + +Next, you will be presented with the "Add a channel" screen. Normally, your first channel will be one that represents you - so using your own name (or psuedonym) as the channel name is a good idea. The channel name should be thought of as a title, or brief description of your channel. The "choose a short nickname" box is similar to a "username" field. We will use whatever you enter here to create a channel address, which other people will use to connect to you, and you will use to log in to other sites. This looks like an email address, and takes the form nickname@siteyouregisteredat.xyz + +When your channel is created you will be taken straight to your settings page where you can define permissions, enable features, etc. All these things are covered in the appropriate section of the helpfiles. + +See Also +[zrl=[baseurl]/help/accounts_profiles_channels_basics]The Basics about Identities within $Projectname[/zrl] +[zrl=[baseurl]/help/accounts]Accounts[/zrl] +[zrl=[baseurl]/help/profiles]Profiles[/zrl] +[zrl=[baseurl]/help/permissions]Permissions[/zrl] +[zrl=[baseurl]/help/remove_account]Remove Account[/zrl] + +[b]Profiles[/b] + +$Projectname has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences. This is different to having different channels. Different channels allow for completely different sets of information. You may have a channel for yourself, a channel for your sports team, a channel for your website, or whatever else. A profile allows for finely graded "sides" of each channel. For example, your default public profile might say "Hello, I'm Fred, and I like laughing". You may show your close friends a profile that adds "and I also enjoy dwarf tossing". + +You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile. + +That said, if you want other friends to be able to find you, it helps to have the following information in your public profile... + +[ul][*]Your real name or at least a nickname everybody knows +[*]A photo of you +[*]Your location on the planet, at least to a country level.[/ul] + +In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like. + +To create an alternate profile, first go to [zrl=[baseurl]/settings/features]Settings > Additional Features[/zrl] and enable "Multiple Profiles" there, otherwise you won't have the ability to use more than just your default profile. + +Then select "Edit Profiles" from the menu of your $Projectname site. You may edit an existing profile, change the profile photo, add things to a profile or create a new profile. You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again. To do that, click on the profile you want to clone and choose "Clone this profile" there. + +In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" next to the profile in question (only available for the profiles that are not your default profile) and then click on user images to add them to or remove them from the group of people who can see this profile. + +Once a profile has been selected, when the person views your profile, they will see the private profile you have assigned. If they are not authenticated, they will see your public profile. + +There is a setting which allows you to publish your profile to a directory and ensure that it can be found by others. You can change this setting on the "Settings" page. + +If you do not wish to be found be people unless you give them your channel address, you may leave your profile unpublished. + +[b]Keywords and Directory Search[/b] + +On the directory page, you may search for people with published profiles. Currently, only the name field and the keywords are searched. You may also include such keywords in your default profile - which may be used to search for common interests with other members. Keywords are used in the channel suggestion tool and although they aren't visible in the directory, they are shown if people visit your profile page. + +On your Connnections page and in the directory there is a link to "Suggestions" or "Channel Suggestions", respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance. + +See Also + +[zrl=[baseurl]/help/AdvancedSearch]Advanced Searching[/zrl] + +[h2]Channels[/h2] + +[h3]What are channels?[/h3] + +Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me". + +The most important features for a channel that represents "me" are: +[ul] +[*]Secure and private "spam free" communications + +[*]Identity and "single-signon" across the entire network + +[*]Privacy controls and permissions which extend to the entire network + +[*]Directory services (like a phone book) +[/ul] +In short, a channel that represents yourself is "me, on the internet". + +[h3]Creating channels[/h3] + +You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link. + +You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice. + +Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions. + +Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0][baseurl]/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts. + +[h3]The grid, permissions and delegation[/h3] + +The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts. + +As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl]. + +You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources. + +[h1]Account Permission Roles[/h1] + + +[h2]Social[/h2] + +[b]Mostly Public[/b] + +The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others. + + +[b]Restricted[/b] + +By default all posts and published items are sent to your 'Friends' privacy group and not made public. New friends are added to this privacy group. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers. + +[b]Private[/b] + +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. + + +[h2]Forum[/h2] + +[b]Mostly Public[/b] + +The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically. + + +[b]Restricted[/b] + +By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner. + +[b]Private[/b] + +By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. + + +[h2]Feed[/h2] + + +[b]Public[/b] + +Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved. + + +[b]Restricted[/b] + +Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. + + +[h2]Special[/h2] + +[b]Celebrity/Soapbox[/b] + +Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile. + + +[b]Group Repository[/b] + +A public forum which allows members to post files/photos/webpages. + + +[h2]Custom/Expert Mode[/h2] + +Set all the privacy and permissions manually to suit your specific needs. + + +[h1]Connecting To Channels[/h1] + +Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it? + +First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels. + +The next thing you can do is look at the Directory. The directory is available on every $Projectname website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later. + +To connect with other $Projectname channels: + +Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit". + +You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. + +[h2] Block/Ignore/Archive/Hide channels [/h2] + +Channels in your address book can have statuses such as [i]blocked[/i], [i]ignored[/i], [i]archived[/i] and [i]hidden[/i]. From your connections page you can see tabs that display the channels with those statuses. From your edit connection pages you can change the statuses of a channel. + +Here's their meaning: + +[b]Blocked:[/b] the channel can't read your items regardless of permissions, nor can it write to your channel. + +[b]Ignored:[/b] the channel can read your items if it has permission, but can't write to your channel. + +[b]Hidden:[/b] the channel does not show up in your profile's connections list, noone can see you're connected, but beware they may still show up to your other connections, for example in post replies. + +[b]Archived:[/b] if a channel can't be reached for 30 days, it is automatically marked as archived. This keeps all the data but stops polling the channel for new information and removes it from autocomplete. If later you learn the channel has come back online, you may manually unarchive it. + +[h2]Premium Channels[/h2] + +Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel. + +[h1]Permissions[/h1] +Permissions in $Projectname are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere. + +[h2]Permission Roles[/h2] + +When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire. + + +[h2]Default Permission Limits[/h2] + +There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends. + +[h2]Access Control[/h2] + +Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish. + +We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around. + + +[dl terms="l"] +[*= The scopes of permissions are:] +[dl terms="i"] + [*= Nobody Except Yourself ] This is self explanatory. Only you will be allowed access. + + [*= Only those you specifically allow ] By default, people you are not connected to, and all new contacts will have this permission denied. You will be able to make exceptions for individual channels on their contact edit screen. + + [*= Anybody in your address book ] Anybody you do not know will have this permission denied, but anybody you accept as a contact will have this permission approved. This is the way most legacy platforms handle permissions. + + [*= Anybody On This Hub ] Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied. + + [*= Anybody in this network ] Anybody in $Projectname will have this permission approved. Even complete strangers. However, anybody not logged in/authenticated will have this permission denied. + + [*= Anybody authenticated ] This is similar to "anybody in this network" except that it can include anybody who can authenticate by any means - and therefore [i]may[/i] include visitors from other networks. + + [*=Guest Access Token] This allows you to share a file, folder, photo, album, or channel with a specific person or group of people. They don't need to be Hubzilla members. You can set an expiration for the Access Token. + + [*= Anybody on the internet ] Completely public. This permission will be approved for anybody at all. +[/dl] +[*= The individual permissions are:] +[dl terms="i"] + [*= Can view my "public" stream and posts. ] This permision determines who can view your channel "stream" that is, the non-private posts that appear on the "home" tab when you're logged in. + + [*= Can view my "public" channel profile. ] This permission determines who can view your channel's profile. This refers to the "about" tab + + [*= Can view my "public" photo albums. ] This permission determines who can view your photo albums. Individual photographs may still be posted to a more private audience. + + [*= Can view my "public" address book. ] This permission determines who can view your contacts. These are the connections displayed in the "View connections" section. + + [*= Can view my "public" file storage. ] This permission determines who can view your public files stored in your cloud. + + [*= Can view my "public" pages. ] This permission determines who can view your public web pages. + + [*= Can send me their channel stream and posts. ] This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery. + + [*= Can post on my channel page ("wall"). ] This permission determines who can write to your wall when clicking through to your channel. + + [*= Can comment on my posts. ] This permission determines who can comment on posts you create. Normally, you would want this to match your "can view my public stream and posts" permission + + [*= Can send me private mail messages. ] This determines who can send you private messages (zotmail). + + [*= Can post photos to my photo albums. ] This determines who can post photographs in your albums. This is very useful for forum-like channels where connections may not be connected to each other. + + [*= Can forward to all my channel contacts via post tags. ] Using @- mentions will reproduce a copy of your post on the profile specified, as though you posted on the channel wall. This determines if people can post to your channel in this way. + + [*= Can chat with me (when available). ] This determines who can join the public chat rooms created by your channel. + + [*= Can write to my "public" file storage. ] This determines who can upload files to your public file storage, or 'cloud'. + + [*= Can edit my "public" pages. ] This determines who can edit your webpages. This is useful for wikis or sites with multiple editors. + + [*= Can administer my channel resources. ] This determines who can have full control of your channel. This should normally be set to "nobody except myself". +[/dl][/dl] +[i]Note:[/i] +Plugins/addons may provide special permission settings, so you may be offered additional permission settings beyond what is described here. + +If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen. + +[h2]Affinity[/h2] + +The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number. + +The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature. + +[h1]Personal Cloud Storage[/h1] + +$Projectname provides an ability to store privately and/or share arbitrary files with friends. + +You may either upload files from your computer into your storage area, or copy them directly from the operating system using the WebDAV protocol. + +On many public servers there may be limits on disk usage. + +[h2]File Attachments[/h2] + +The quickest and easiest way to share files is through file attachments. In the row of icons below the status post editor is a tool to upload attachments. Click the tool, select a file and submit. After the file is uploaded, you will see an attachment code placed inside the text region. Do not edit this line or it may break the ability for your friends to see the attachment. You can use the post permissions dialogue box or privacy hashtags to restrict the visibility of the file - which will be set to match the permissions of the post your are sending. + +To delete attachments or change the permissions on the stored files, visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username replacing username with the nickname you provided during channel creation[/observer]. + +[h2]Web Access[/h2] + +Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. + +[h2]WebDAV access[/h2] + +See: [zrl=[baseurl]/help/member/member_guide#Cloud_Desktop_Clients]Cloud Desktop Clients[/zrl] + +[h2]Permissions[/h2] + +When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups. + +[h2]Cloud Desktop Clients[/h2] + +[h3]Windows Clients[/h3] +[list] +[*][zrl=[baseurl]/help/dav_windows]Windows Internal Client[/zrl] +[/list] + +[h3]Linux Clients[/h3] +[list] +[*][zrl=[baseurl]/help/dav_mount]Command Line as a Filesystem[/zrl] +[*][zrl=[baseurl]/help/dav_dolphin]Dolphin[/zrl] +[*][zrl=[baseurl]/help/dav_konqueror]Konqueror[/zrl] +[*][zrl=[baseurl]/help/dav_nautilus]Nautilus[/zrl] +[*][zrl=[baseurl]/help/dav_nemo]Nemo[/zrl] +[/list] + +[h3]Server Notes[/h3] + +Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. + +[h1]Remove Channel or Account[/h1] + +[h2]Remove Channel[/h2] + +Go to the bottom of your channel settings page or visit the URL: + + [baseurl]/removeme + +You will need to confirm your password and the channel you are currently logged into will be removed. + +This is irreversible. + +If you have identity clones on other hubs this only removes by default the channel instance which exists on this hub. + +[h2]Remove Account[/h2] + +Go to the bottom of your account settings page or visit the URL: + + [baseurl]/removeaccount + +You will need to confirm your password and the account you are currently logged into will be removed. + +This is irreversible. + +All your channels will be deleted. If you have identity clones on other hubs this only removes by default the channels instances which exists on this hub. + +#include doc/macros/main_footer.bb; diff --git a/doc/member/member_guide.html b/doc/member/member_guide.html deleted file mode 100644 index 62a4cdabe..000000000 --- a/doc/member/member_guide.html +++ /dev/null @@ -1,460 +0,0 @@ - -

      Overview

      -

      While many features and capabilities of -Hubzilla are familiar to people who have used social networking sites and -blogging software, there are also quite a few new concepts and features that -most people have not encountered before. Some of the new ideas are related to -the decentralized nature of the grid; others are associated -with the advanced permissions system that is necessary to -protect your data privacy. The purpose of this guide is to help you understand -how to create, configure, and use your nomadic identity.

      - - -

      Registration

      -Not all Hubzilla sites allow open -registration. If registration is allowed, you will see a "Register" link -immediately below the login prompts on the site home page. Following this link -will take you to the site Registration page. On some sites it may redirect you -to another site which allow registrations. As all Hubzilla sites are linked, it -does not matter where your account resides.

      Your Email -Address

      Please provide a valid email address. Your email address -is never published. This address will be used to activate your account, to -(optionally) send email notifications for incoming messages or items, and to -recover lost passwords.

      Password

      Enter a -password of your choice, and repeat it in the second box to ensure it was typed -correctly. As Hubzilla offers a decentralised identity, your account can log you -in to many other websites.

      Terms Of Service

      Click -the link to read the site's Terms of Service. Once you've read -them, tick the box in the register form to -confirm.

      Register

      Once you have provided the -necessary details, click the 'Register' button. Some sites may require -administrator approval before the registration is processed, and you will be -alerted if this is the case. Please watch your email (including spam folders) -for your registration approval.

      Create a -Channel

      Next, you will be presented with the "Add a channel" -screen. Normally, your first channel will be one that represents you - so using -your own name (or psuedonym) as the channel name is a good idea. The channel -name should be thought of as a title, or brief description of your channel. The -"choose a short nickname" box is similar to a "username" field. We will use -whatever you enter here to create a channel address, which other people will use -to connect to you, and you will use to log in to other sites. This looks like an -email address, and takes the form nickname@siteyouregisteredat.xyz

      When -your channel is created you will be taken straight to your settings page where -you can define permissions, enable features, etc. All these things are covered -in the appropriate section of the helpfiles.

      See Also
      The Basics about -Identities within Hubzilla
      Accounts
      Profiles
      Permissions
      Remove Account - -

      Profiles

      -Hubzilla has unlimited profiles. You may use -different profiles to show different "sides of yourself" to different audiences. -This is different to having different channels. Different channels allow for -completely different sets of information. You may have a channel for yourself, a -channel for your sports team, a channel for your website, or whatever else. A -profile allows for finely graded "sides" of each channel. For example, your -default public profile might say "Hello, I'm Fred, and I like laughing". You may -show your close friends a profile that adds "and I also enjoy dwarf -tossing".

      You always have a profile known as your "default" or "public" -profile. This profile is always available to the general public and cannot be -hidden (there may be rare exceptions on privately run or disconnected sites). -You may, and probably should restrict the information you make available on your -public profile.

      That said, if you want other friends to be able to find -you, it helps to have the following information in your public -profile...

      • Your real name or at least a nickname everybody knows
      • A -photo of you
      • Your location on the planet, at least to a country -level.


      In addition, if you'd like to meet people that share -some general interests with you, please take a moment and add some "Keywords" to -your profile. Such as "music, linux, photography" or whatever. You can add as -many keywords as you like.

      To create an alternate profile, first go to Settings > Additional -Features and enable "Multiple Profiles" there, otherwise you won't have the -ability to use more than just your default profile.

      Then select "Edit -Profiles" from the menu of your Hubzilla site. You may edit an existing profile, -change the profile photo, add things to a profile or create a new profile. You -may also create a "clone" of an existing profile if you only wish to change a -few items but don't wish to enter all the information again. To do that, click -on the profile you want to clone and choose "Clone this profile" -there.

      In the list of your profiles, you can also choose the contacts who -can see a specific profile. Just click on "Edit visibility" next to the profile -in question (only available for the profiles that are not your default profile) -and then click on user images to add them to or remove them from the group of -people who can see this profile.

      Once a profile has been selected, when -the person views your profile, they will see the private profile you have -assigned. If they are not authenticated, they will see your public -profile.

      There is a setting which allows you to publish your profile to a -directory and ensure that it can be found by others. You can change this setting -on the "Settings" page.

      If you do not wish to be found be people unless -you give them your channel address, you may leave your profile -unpublished.

      Keywords and Directory Search

      On the -directory page, you may search for people with published profiles. Currently, -only the name field and the keywords are searched.  You may also -include such keywords in your default profile - which may be used to search for -common interests with other members. Keywords are used in the channel suggestion -tool and although they aren't visible in the directory, they are shown if people -visit your profile page.

      On your Connnections page and in the directory -there is a link to "Suggestions" or "Channel Suggestions", respectively. This -will find channels who have matching and/or similar keywords. The more keywords -you provide, the more relevant the search results that are returned. These are -sorted by relevance.

      See Also

      Advanced Searching - -

      Channels

      -

      What are channels?

      Channels are simply -collections of content stored in one place. A channel can represent anything. It -could represent you, a website, a forum, photo albums, anything. For most -people, their first channel with be "Me".

      The most important features for -a channel that represents "me" are:

      • Secure and private "spam free" -communications

      • Identity and "single-signon" across the entire -network

      • Privacy controls and permissions which extend to the -entire network

      • Directory services (like a phone -book)

      In short, a channel that represents yourself is "me, on -the internet".

      Creating channels



      You will be required to -create your first channel as part of the sign up process. You can also create -additonal channels from the "Select channel" link.

      You will be asked to -provide a channel name, and a short nick name. For a channel that represents -yourself, it is a good idea to use your real name here to ensure your friends -can find you, and connect to your channel. The short nickname will be used to -generate a "webbie". This is a bit like a username, and will look like an email -address, taking the form nickname@domain. You should put a little thought into -what you want to use here. Imagine somebody asking for your webbie and having to -tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better -choice.

      Once you have created your channel, you will be taken to the -settings page, where you can configure your channel, and set your default -permissions.

      Once you have done this, your channel is ready to use. At -[observer=1][observer.url][/observer][observer=0]example.com/ -channel/username[/observer] you will find your channel "stream". This is where -your recent activity will appear, in reverse chronological order. If you post in -the box marked "share", the entry will appear at the top of your stream. You -will also find links to all the other communication areas for this channel here. -The "About" tab contains your "profile", the photos page contain photo albums, -and the events page contains events share by both yourself and your -contacts.

      The grid, permissions and delegation



      The "Grid" -page contains all recent posts from across Hubzilla network, again in reverse -chronologial order. The exact posts that appear here depend largely on your -permissions. At their most permissive, you will receive posts from complete -strangers. At the other end of the scale, you may see posts from only your -friends - or if you're feeling really anti-social, only your own -posts.

      As mentioned at the start, many other kinds of channel are -possible, however, the creation procedure is the same. The difference between -channels lies primarily in the permissions assigned. For example, a channel for -sharing documents with colleagues at work would probably want more permissive -settings for "Can write to my "public" file storage" than a personal account. -For more information, see the permissions section.

      You can also -delegate control of your channels' posts and connections, but not its -configurations, to another channel. That is done by editing a connection and -assigning it the permission to administer your channel's resources. - - - -

      Account Permission Roles

      - -

      Social

      - -

      Mostly Public

      - -

      The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others.

      - -

      Restricted

      - -

      By default all posts and published items are sent to your 'Friends' privacy group and not made public. New friends are added to this privacy group. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers.

      - -

      Private

      - -

      By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden.

      - -

      Forum

      - -

      Mostly Public

      - -

      The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically.

      - -

      Restricted

      - -

      By default all posts and published items are sent to the channel's 'Friends' privacy group. New friends are added to this privacy group. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner.

      - -

      Private

      - -

      By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible.

      - -

      Feed

      - -

      Public

      - -

      Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved.

      - -

      Restricted

      - -

      Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner.

      - -

      Special

      - -

      Celebrity/Soapbox

      - -

      Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile.

      - -

      Group Repository

      - -

      A public forum which allows members to post files/photos/webpages.

      - -

      Custom/Expert Mode

      - -

      Set all the privacy and permissions manually to suit your specific needs.

      - - -

      Connecting To Channels

      - -

      Connections in Hubzilla can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it?

      - -

      First, you need to find some channels to connect to. There are two primary ways of doing this. Firstly, setting the "Can send me their channel stream and posts" permission to "Anybody in this network" will bring posts from complete strangers to your matrix. This will give you a lot of public content and should hopefully help you find interesting, entertaing people, forums, and channels.

      - -

      The next thing you can do is look at the Directory. The directory is available on every Hubzilla website which means searching from your own site will bring in results from the entire network. You can search by name, interest, location and keyword. This is incomplete, so we'll improve this paragraph later.

      - -

      To connect with other Hubzilla channels:

      - -

      Visit their profile by clicking their photograph in the directory, matrix, or comments, and it will open their channel home page in the channel viewer. At the left hand side of the screen, you will usually see a link called "connect". Click it, and you're done. Depending on the settings of the channel you are connecting to, you may need to wait for them to approve your connection, but no further action is needed on your part. Once you've initiated the connection, you will be taken to the connection editor. This allows you to assign specific permissions for this channel. If you don't allow any permissions, communication will be very limited. There are some quick links which you can use to avoid setting individual permissions. To provide a social network environment, "Full Sharing" is recommended. You may review the settings that are applied with the quick links to ensure they are suitable for the channel you are connecting with and adjust if necessary. Then scroll to the bottom of the page and click "Submit".

      - -

      You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions.

      - -

      Block/Ignore/Archive/Hide channels

      - -

      Channels in your address book can have statuses such as blocked, ignored, archived and hidden. From your connections page you can see tabs that display the channels with those statuses. From your edit connection pages you can change the statuses of a channel.

      - -

      Here's their meaning:

      - -

      Blocked: the channel can't read your items regardless of permissions, nor can it write to your channel.

      - -

      Ignored: the channel can read your items if it has permission, but can't write to your channel.

      - -

      Hidden: the channel does not show up in your profile's connections list, noone can see you're connected, but beware they may still show up to your other connections, for example in post replies.

      - -

      Archived: if a channel can't be reached for 30 days, it is automatically marked as archived. This keeps all the data but stops polling the channel for new information and removes it from autocomplete. If later you learn the channel has come back online, you may manually unarchive it.

      - -

      Premium Channels

      - -

      Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel.

      - - -

      Permissions and Access Control

      - -
      Permissions in Hubzilla are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere.

      Permission Roles

      When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire.


      Default Permission Limits

      There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, all of your photos will now be visible only to friends.

      Access Control

      Access Control is the preferred method of managing privacy in most cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish.

      We highly recommend that you use the "typical social network" settings when you create your first channel, as it allows others to communicate with you and help you out if you have difficulty. You will find that these settings allow you as much privacy as you desire - when you desire it; but also allow you to communicate in public if you choose to. You are free to use much more private settings once you have learned your way around.


      -
      The scopes of permissions are:

      -
      Nobody Except Yourself
      This is self explanatory. Only you will be allowed access.
        
      -
      Only those you specifically allow
      By default, people you are not connected to, and all new contacts will   have this permission denied. You will be able to make exceptions for individual channels on their contact edit   screen.
        
      -
      Anybody in your address book
      Anybody you do not know will have this permission denied, but anybody you   accept as a contact will have this permission approved. This is the way most legacy platforms handle   permissions.
        
      -
      Anybody On This Hub
      Anybody with a channel on the same hub/website as you will have permission approved. Anybody who is registered at a different hub will have this permission denied.
        
      -
      Anybody in this network
      Anybody in Hubzilla will have this permission approved. Even complete   strangers. However, anybody not logged in/authenticated will have this permission denied.
        
      -
      Anybody authenticated
      This is similar to "anybody in this network" except that it can include anybody   who can authenticate by any means - and therefore may include visitors from other networks.
        
      -
      Anybody on the internet
      Completely public. This permission will be approved for anybody at all.

      -
      The individual permissions are:

      -
      Can view my "public" stream and posts.
      This permision determines who can view your channel "stream" that is, the non-private posts that appear on the "home" tab when you're logged in.

      -
      Can view my "public" channel profile.
      This permission determines who can view your channel's profile. This refers to the "about" tab

      -
      Can view my "public" photo albums.
      This permission determines who can view your photo albums. Individual photographs may still be posted to a more private audience.

      -
      Can view my "public" address book.
      This permission determines who can view your contacts. These are the connections displayed in the "View connections" section.

      -
      Can view my "public" file storage.
      This permission determines who can view your public files stored in your cloud.

      -
      Can view my "public" pages.
      This permission determines who can view your public web pages.

      -
      Can send me their channel stream and posts.
      This permission determines whose posts you will view. If your channel is a personal channel (ie, you as a person), you would probably want to set this to "anyone in my address book" at a minimum. A personal notes channel would probably want to choose "nobody except myself". Setting this to "Anybody in the network" will show you posts from complete strangers, which is a good form of discovery.

      -
      Can post on my channel page ("wall").
      This permission determines who can write to your wall when clicking through to your channel.

      -
      Can comment on my posts.
      This permission determines who can comment on posts you create. Normally, you would want this to match your "can view my public stream and posts" permission

      -
      Can send me private mail messages.
      This determines who can send you private messages (zotmail).

      -
      Can post photos to my photo albums.
      This determines who can post photographs in your albums. This is very useful for forum-like channels where connections may not be connected to each other.

      -
      Can forward to all my channel contacts via post tags.
      Using @- mentions will reproduce a copy of your post on the profile specified, as though you posted on the channel wall. This determines if people can post to your channel in this way.

      -
      Can chat with me (when available).
      This determines who can join the public chat rooms created by your channel.

      -
      Can write to my "public" file storage.
      This determines who can upload files to your public file storage, or 'cloud'.

      -
      Can edit my "public" pages.
      This determines who can edit your webpages. This is useful for wikis or sites with multiple editors.

      -
      Can administer my channel resources.
      This determines who can have full control of your channel. This should normally be set to "nobody except myself".

      Note:
      Plugins/addons may provide special permission settings, so you may be offered additional permission settings beyond what is described here.

      If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen.

      Affinity

      The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number.

      The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature. - - -

      Cloud Storage

      - -

      Hubzilla provides an ability to store privately and/or share arbitrary -files with friends.

      You may either upload files from your computer into -your storage area, or copy them directly from the operating system using the -WebDAV protocol.

      On many public servers there may be limits on disk -usage.

      File Attachments

      The quickest and easiest -way to share files is through file attachments. In the row of icons below the -status post editor is a tool to upload attachments. Click the tool, select a -file and submit. After the file is uploaded, you will see an attachment code -placed inside the text region. Do not edit this line or it may break the ability -for your friends to see the attachment. You can use the post permissions -dialogue box or privacy hashtags to restrict the visibility of the file - which -will be set to match the permissions of the post your are sending.

      To -delete attachments or change the permissions on the stored files, visit [baseurl]/cloud/[observer.webname]".

      Web -Access

      Your files are visible on the web at the location -"cloud/[observer.webname]" to anybody who is allowed to view them. If the viewer has -sufficient privileges, they may also have the ability to create new files and -folders/directories.

      WebDAV access

      See: Cloud Desktop -Clients

      Permissions

      When using WebDAV, the -file is created with your channel's default file permissions and this cannot be -changed from within the operating system. It also may not be as restrictive as -you would like. What we've found is that the preferred method of making files -private is to first create folders or directories; then visit -"filestorage/[observer.webname]"; select the directory and change the permissions. Do -this before you put anything into the directory. The directory permissions take -precedence so you can then put files or other folders into that container and -they will be protected from unwanted viewers by the directory permissions. It is -common for folks to create a "personal" or "private" folder which is restricted -to themselves. You can use this as a personal cloud to store anything from -anywhere on the web or any computer and it is protected from others. You might -also create folders for "family" and "friends" with permission granted to -appropriate privacy groups. - -

      Cloud Desktop Clients

      - -

      Windows Clients

      - -

      Windows Internal Client

      - -RedDav using -Windows 7 graphical user interface wizard:
      1. Left-click the Start-button to -open the start menu.
      2. Right-click the My computer icon to access its -menu.
      3. Left-click Map network drive... to open the connection dialog -wizard.
      4. Type #^https://example.net/dav/ -your_channel_name in the textbox and click the Complete button where -"example.net" is the URL of your hub.
      5. Type your Hubzilla account's user -name. IMPORTANT - NO at-sign or domain name.
      6. Type your Hubzilla -password - - -

      Linux Clients

      - -

      Mounting As A Filesystem

      - -To install your cloud directory as a filesystem, you first need davfs2 -installed.  99% of the time, this will be included in your -distributions repositories.  In Debian

      apt-get install davfs2

      If you want to let -normal users mount the filesystem

      dpkg-reconfigure davfs2

      and select "yes" at -the prompt.

      Now you need to add any user you want to be able to mount dav -to the davfs2 group

      usermod -aG davfs2 -<DesktopUser>

      Note: on some systems the -user group may be different, i.e. - "network"
      on Arch Linux. If in doubt, -check the davfs documentation for your
      particular OS.

      Edit -/etc/fstab

      nano /etc/fstab

      to -include your cloud directory by adding


      [baseurl]/dav/ /mount/point -davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 -1


      Where [baseurl] is the URL of your hub, -/mount/point is the location you want to mount the cloud, and -<DesktopUser> is the user you log in to one your computer.  Note -that if you are mounting as a normal user (not root) the mount point must be in -your home directory.

      For example, if I wanted to mount my cloud to a -directory called 'cloud' in my home directory, and my username was bob, my fstab -would be

      [baseurl]/dav/ -/home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 -1

      Now, create the mount point.

      mkdir /home/bob/cloud

      and also create a -directory file to store your credentials

      mkdir -/home/bob/.davfs2

      Create a file called 'secrets'

      nano /home/bob/.davfs2/secrets

      and add your -cloud login credentials


      [baseurl]/dav -<username> <password>


      Where <username> and -<password> are the username and password for your -hub.

      Don't let this file be writeable by anyone who doesn't need it -with

      chmod 600 -/home/bob/.davfs2/secrets

      Finally, mount the drive.

      mount [baseurl]/dav

      -You can now find your cloud at /home/bob/cloud and use it as though it were part -of your local filesystem - even if the applications you are using have no dav -support themselves.

      Troubleshooting

      With some -webservers and certain configurations, you may find davfs2 creating files with 0 -bytes file size where other clients work just fine.  This is generally -caused by cache and locks.  If you are affected by this issue, you -need to edit your davfs2 configuration.

      nano -/etc/davfs2/davfs2.conf

      Your distribution will provide a sample -configuration, and this file should already exist, however, most of it will be -commented out with a # at the beginning of the line.  

      First -step is to remove locks.

      Edit the use_locks line so it reads use_locks 0.

      Unmount your file system, remount -your file system, and try copying over a file from the command -line.  Note you should copy a new file, and not overwrite an old one -for this test.  Leave it a minute or two then do ls -l -h and check the file size of your new file is -still greater than 0 bytes.  If it is, stop there, and do nothing -else.

      If that still doesn't work, disable the cache.  Note that -this has a performance impact so should only be done if disabling locks didn't -solve your problem.  Edit the cache_size and set it to cache_size 0 and also set file_refresh to file_refresh 0.  Unmount your filesystem, -remount your file system, and test it again.

      If it still doesn't -work, there is one more thing you can try.  (This one is caused by a -bug in older versions of dav2fs itself, so updating to a new version may also -help).  Enable weak etag dropping by setting drop_weak_etags 1.  Unmount and remount -your filesystem to apply the changes. - - -

      Dolphin

      -Visit webdavs://example.com/dav where "example.com" is the URL of your hub. - -When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account. - -Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication. - - -

      Konqueror

      - -Simply visit webdavs://example.com/cloud after logging in to your hub, where "example.com" is the URL of your hub. - -No further authentication is required if you are logged in to your hub in the normal manner. - -Additionally, if one has authenticated at a different hub during their normal browser session, your identity will be passed to the cloud for these hubs too - meaning you can access any private files on any server, as long as you have permissions to see them, as long as you have visited that site earlier in your session. - -This functionality is normally restricted to the web interface, and is not available to any desktop software other than KDE. - -

      Nautilus

      - -1. Open a File browsing window (that's Nautilus)
      2. Select File > Connect to server from the menu
      3. Type davs://<domain_name>/dav/<your_channelname> and click Connect
      4. You will be prompted for your channel name (same as above) and password
      5. Your personal DAV directory will be shown in the window - -

      Nemo

      - -For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there.

      1st way
      type "davs://<domain_name>/dav/<your_channelname>" in the address bar.

      2nd way
      Menu > file > connect to server
      Fill the dialog
      - Server: hubzilla_domain_name
      - Type: Secure WebDAV (https)
      - Folder: /dav
      - Username: yourchannelname
      - Password: yourpassword

      Once open you can set a bookmark. - - - -Server Notes

      Note: There have been reported issues with clients that -use "chunked transfer encoding", which includes Apple iOS services, and also the -"AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads -often end up with files of zero size. This is caused by an incorrect -implemention of chunked encoding in some current FCGI (fast-cgi) -implementations. Apache running with PHP as a module does not have these issues, -but when running under FCGI you may need to use alternative clients or use the -web uploader. At the time of this writing the issue has been open and no updates -provided for at least a year. If you encounter zero size files with other -clients, please check the client notes; as there are occasional configuration -issues which can also produce these symptoms. - - -

      Remove Channel or Account

      - -

      Remove Channel

      Go to the bottom of your channel -settings page or visit the URL:

          [baseurl]/removeme -

      You will need to confirm your password and the channel you are currently -logged into will be removed.

      This is irreversible.

      If you have -identity clones on other hubs this only removes  by default the -channel instance which exists on this hub.

      Remove -Account

      Go to the bottom of your account settings page or visit -the URL:

          [baseurl]/removeaccount -
          
      You will need to confirm your password and -the account you are currently logged into will be removed.

      This is -irreversible.

      All your channels will be deleted. If you have identity -clones on other hubs this only removes by default the channels instances which -exists on this hub. -- cgit v1.2.3 From 2865ad52811f668372c545bcf92c90eac338cdc2 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Thu, 8 Dec 2016 21:12:05 -0500 Subject: Replace Hubzilla with $Projectname more. Revise code block side-scroll --- doc/Hubzilla_on_OpenShift.bb | 2 +- doc/admin/administrator_guide.md | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) (limited to 'doc') diff --git a/doc/Hubzilla_on_OpenShift.bb b/doc/Hubzilla_on_OpenShift.bb index 9ccd66284..bdc8bf9bf 100644 --- a/doc/Hubzilla_on_OpenShift.bb +++ b/doc/Hubzilla_on_OpenShift.bb @@ -1,4 +1,4 @@ -[b]Hubzilla on OpenShift[/b] +[b]$Projectname on OpenShift[/b] You will notice a new .openshift folder when you fetch from upstream, i.e. from [url=https://github.com/redmatrix/hubzilla.git]https://github.com/redmatrix/hubzilla.git[/url] , which contains a deploy script to set up Hubzilla on OpenShift with plugins and extra themes. As of this writing, 2015-10-28, you do not have to pay for OpenShift on the Free plan, which gives you three gears at no cost. The Bronze plan gives you three gears at no cost too, but you can expand to 16 gears by paying, and this requires you to register your payment card. The three gears can give three instances of Hubzilla with one gear each, or you can combine two gears into one high-availability Hubzilla instance and one extra gear. The main difference to be aware of is this: gears on the Free plan will go into hibernation if left idle for too long, this does not happen on the Bronze plan. diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md index 47592b58c..bb5c821ee 100644 --- a/doc/admin/administrator_guide.md +++ b/doc/admin/administrator_guide.md @@ -1,16 +1,16 @@ # Overview -Hubzilla is more than a simple web application. It is a +$Projectname is more than a simple web application. It is a complex communications system which more closely resembles an email server than a web server. For reliability and performance, messages are delivered in the background and are queued for later delivery when sites are down. This kind of functionality requires a bit more of the host system than the typical blog. Not every PHP/MySQL hosting provider will be able to support -Hubzilla. Many will but please review the requirements and confirm these +$Projectname. Many will but please review the requirements and confirm these with your hosting provider prior to installation. -We've tried very hard to ensure that Hubzilla will run on commodity +We've tried very hard to ensure that $Projectname will run on commodity hosting platforms such as those used to host Wordpress blogs and Drupal websites. It will run on most any Linux VPS system. Windows LAMP platforms such as XAMPP and WAMP are not officially supported at this time however @@ -31,7 +31,7 @@ issues. ## Choose a domain name or subdomain name for your server -Hubzilla can only be installed into the root of a domain or sub-domain, and can +$Projectname can only be installed into the root of a domain or sub-domain, and can not be installed using alternate TCP ports. ## Decide if you will use SSL and obtain an SSL certificate before software installation @@ -61,15 +61,15 @@ Free "browser-valid" certificates are available from providers such as StartSSL and LetsEncrypt. If you do NOT use SSL, there may be a delay of up to a minute for the initial -install script * while we check the SSL port to see if anything responds there. -When communicating with new sites, Hubzilla always attempts connection on the +install script - while we check the SSL port to see if anything responds there. +When communicating with new sites, $Projectname always attempts connection on the SSL port first, before falling back to a less secure connection. If you do not use SSL, your webserver MUST NOT listen on port 443 at all. If you use LetsEncrypt to provide certificates and create a file under .well-known/acme-challenge so that LetsEncrypt can verify your domain ownership, please remove or rename the .well-known directory as soon as the certificate is -generated. Hubzilla will provide its own handler for ".well-known" services when +generated. $Projectname will provide its own handler for ".well-known" services when it is installed, and an existing directory in this location may prevent some of these services from working correctly. This should not be a problem with Apache, but may be an issue with nginx or other web server platforms. @@ -111,7 +111,7 @@ PHP might differ from the _webserver_ version # Manual Installation # -## Unpack the Hubzilla files into the root of your web server document area ### +## Unpack the $Projectname files into the root of your web server document area ### If you copy the directory tree to your webserver, make sure that you include the hidden files like .htaccess. @@ -168,7 +168,7 @@ Create searchable representations of the online documentation. You may do this util/importdoc # Automated installation via the .homeinstall shell script -There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install Hubzilla and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary. +There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install $Projectname and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary. ## Requirements The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3: @@ -194,7 +194,7 @@ The installation script was originally designed for a small hardware server behi 1. `sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini` 1. `sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini` 1. `service apache2 reload` -1. Open your domain with a browser and step throught the initial configuration of Hubzilla. +1. Open your domain with a browser and step throught the initial configuration of $Projectname. # Service Classes @@ -296,16 +296,16 @@ empty: util/config system directory_server "" -# Upgrading from RedMatrix to Hubzilla +# Upgrading from RedMatrix to $Projectname -## How to migrate an individual channel from RedMatrix to Hubzilla +## How to migrate an individual channel from RedMatrix to $Projectname -1. Clone the channel by opening an account on a Hubzilla hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings. +1. Clone the channel by opening an account on a $Projectname hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings. 1. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary. -1. Import the JSON data files sequentially in chronological order into the Hubzilla clone using the new.hub/import_items tool. +1. Import the JSON data files sequentially in chronological order into the $Projectname clone using the new.hub/import_items tool. 1. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address. 1. After successful import (check!) delete your channel on the old RedMatrix Server. -1. On the Hubzilla server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. +1. On the $Projectname server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. # Troubleshooting ## Log files @@ -319,7 +319,7 @@ There are three different log facilities. There are some lines at the bottom of the supplied .htconfig.php file; which if uncommented will enable a PHP error log (*extremely* useful for finding the source of white screen failures). This isn't done by default due to potential issues with logfile ownership and write permissions and the fact that there is no logfile rotation by default. -**The third is the "application log"**. This is used by Hubzilla to report what is going on in the program and usually reports any difficulties or unexpected data we received. It also occasionally reports "heartbeat" status messages to indicate that we reached a certain point in a script. **This** is the most important log file to us, as we create it ourself for the sole purpose of reporting the status of background tasks and anything that seems weird or out of place. It may not be fatal, but maybe just unexpected. If you're performing a task and there's a problem, let us know what is in this file when the problem occurred. (Please don't send me 100M dumps you'll only piss me off). Just a few relevant lines so I can rule out a few hundred thousand lines of code and concentrate on where the problem starts showing up. +**The third is the "application log"**. This is used by $Projectname to report what is going on in the program and usually reports any difficulties or unexpected data we received. It also occasionally reports "heartbeat" status messages to indicate that we reached a certain point in a script. **This** is the most important log file to us, as we create it ourself for the sole purpose of reporting the status of background tasks and anything that seems weird or out of place. It may not be fatal, but maybe just unexpected. If you're performing a task and there's a problem, let us know what is in this file when the problem occurred. (Please don't send me 100M dumps you'll only piss me off). Just a few relevant lines so I can rule out a few hundred thousand lines of code and concentrate on where the problem starts showing up. These are your site logs, not mine. We report serious issues at any log level. I highly recommend 'DEBUG' log level for most sites - which provides a bit of additional info and doesn't create huge logfiles. When there's a problem which defies all attempts to track, you might wish to use DATA log level for a short period of time to capture all the detail of what structures we were dealing with at the time. This log level will use a lot of space so is recommended only for brief periods or for developer test sites. -- cgit v1.2.3 From f5737a63545ef5b18f59775d4a6d39503c493aa5 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Thu, 8 Dec 2016 21:16:30 -0500 Subject: Add hub snapshot tool page to admin section --- doc/admin/hub_snapshots.md | 127 +++++++++++++++++++++++++++++++++++++++++++++ doc/toc.html | 1 + 2 files changed, 128 insertions(+) create mode 100644 doc/admin/hub_snapshots.md (limited to 'doc') diff --git a/doc/admin/hub_snapshots.md b/doc/admin/hub_snapshots.md new file mode 100644 index 000000000..7e4ba95b2 --- /dev/null +++ b/doc/admin/hub_snapshots.md @@ -0,0 +1,127 @@ +# Hub Snapshot Tools + +Hubzilla developers frequently need to switch between branches that might have +incompatible database schemas or content. The following two scripts create and +restore complete snapshots of a Hubzilla instance, including both the hub web +root and the entire database state. Each script requires a config file called +`hub-snapshot.conf` residing in the same folder and containing the specific +directories and database details of your hub. + +# Config + +The format of the config file is very strict. There must be no spaces between the +variable name and the value. Replace only the content inside the quotes with your +configuration. Save this file as `hub-snapshot.conf` alongside the scripts. + + # Location of hub root. Typically this is the location of the Hubzilla repo clone. + HUBROOT="/var/www/" + # MySQL database name + DBNAME="hubzilla" + # MySQL database user + DBUSER="hubzilla" + # MySQL database password + DBPWD="akeufajeuwfb" + # The target snapshot folder where the git repo will be initialized + SNAPSHOTROOT="/root/snapshots/hubzilla/" + +# Snapshot + +Example usage: + + sh hub-snapshot.sh my-hub.conf "Commit message for the snapshot" + +**hub-snapshot.sh**: + + #!/bin/bash + + if ! [ -f "$1" ]; then + echo "$1 is not a valid file. Aborting..." + exit 1 + fi + source "$1" + #echo "$DBNAME" + #echo "$DBUSER" + #echo "$DBPWD" + #echo "$HUBROOT" + #echo "$SNAPSHOTROOT" + MESSAGE="snapshot: $2" + + if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then + echo "Required variable is not set. Aborting..." + exit 1 + fi + + if [ ! -d "$SNAPSHOTROOT"/db/ ]; then + mkdir -p "$SNAPSHOTROOT"/db/ + fi + if [ ! -d "$SNAPSHOTROOT"/www/ ]; then + mkdir -p "$SNAPSHOTROOT"/www/ + fi + + if [ ! -d "$SNAPSHOTROOT"/www/ ] || [ ! -d "$SNAPSHOTROOT"/db/ ]; then + echo "Error creating snapshot directories. Aborting..." + exit 1 + fi + + echo "Export database..." + mysqldump -u "$DBUSER" -p"$DBPWD" "$DBNAME" > "$SNAPSHOTROOT"/db/"$DBNAME".sql + echo "Copy hub root files..." + rsync -va --delete --exclude=.git* "$HUBROOT"/ "$SNAPSHOTROOT"/www/ + + cd "$SNAPSHOTROOT" + + if [ ! -d ".git" ]; then + git init + fi + if [ ! -d ".git" ]; then + echo "Cannot initialize git repo. Aborting..." + exit 1 + fi + + git add -A + echo "Commit hub snapshot..." + git commit -a -m "$MESSAGE" + + exit 0 + +# Restore + + #!/bin/bash + # Restore hub to a previous state. Input hub config and commit hash + + if ! [ -f "$1" ]; then + echo "$1 is not a valid file. Aborting..." + exit 1 + fi + source "$1" + COMMIT=$2 + + if [ "$DBPWD" == "" -o "$SNAPSHOTROOT" == "" -o "$DBNAME" == "" -o "$DBUSER" == "" -o "$HUBROOT" == "" ]; then + echo "Required variable is not set. Aborting..." + exit 1 + fi + RESTOREDIR="$(mktemp -d)/" + + if [ ! -d "$RESTOREDIR" ]; then + echo "Cannot create restore directory. Aborting..." + exit 1 + fi + echo "Cloning the snapshot repo..." + git clone "$SNAPSHOTROOT" "$RESTOREDIR" + cd "$RESTOREDIR" + echo "Checkout requested snapshot..." + git checkout "$COMMIT" + echo "Restore hub root files..." + rsync -a --delete --exclude=.git* "$RESTOREDIR"/www/ "$HUBROOT"/ + echo "Restore hub database..." + mysql -u "$DBUSER" -p"$DBPWD" "$DBNAME" < "$RESTOREDIR"/db/"$DBNAME".sql + + chown -R www-data:www-data "$HUBROOT"/{store,extend,addon,.htlog,.htconfig.php} + + echo "Restored hub to snapshot $COMMIT" + echo "Removing temporary files..." + + rm -rf "$RESTOREDIR" + + exit 0 + diff --git a/doc/toc.html b/doc/toc.html index bc5097d0e..64eb93435 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -77,6 +77,7 @@ -- cgit v1.2.3 From cafa5217ed3824c142b44b8b8e5bcb484ffea6fe Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Thu, 8 Dec 2016 21:41:04 -0500 Subject: Condense sticky nav TOC to h1 only. Add deep TOC to top of each page. Adjust developer guide headings. --- doc/developer/developer_guide.md | 20 ++++++++++---------- doc/toc.html | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'doc') diff --git a/doc/developer/developer_guide.md b/doc/developer/developer_guide.md index 3c0f7294d..7ec76714f 100644 --- a/doc/developer/developer_guide.md +++ b/doc/developer/developer_guide.md @@ -1,4 +1,4 @@ -## Who is a Hubzilla developer? Should I read this? +# Who is a Hubzilla developer? Should I read this? Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, _even if you do not know how to write code_. The software itself is only a part of the Hubzilla project. You can contribute by @@ -11,31 +11,31 @@ _Software_ developers are of course welcomed; there are so many great ideas to i This document will help you get started learning and contributing to Hubzilla. -## Versioning system +# Versioning system The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control. -## Git repository branches +# Git repository branches There are two official branches of the Hubzilla git repo. * The stable version is maintained on the **master** branch. The latest commit in this branch is considered to be suitable for production hubs. * Experimental development occurs on the **dev** branch, which is merged into **master** when it is deemed tested and stable enough. -## Developer tools and workflows +# Developer tools and workflows -### Hub Snapshots +## Hub Snapshots The [[Hub Snapshots]] page provides instructions and scripts for taking complete snapshots of a hub to support switching between consistent and completely known states. This is useful to prevent situations where the content or database schema might be incompatible with the code. -## Translations +# Translations Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit [https://www.transifex.com/projects/p/red-matrix/](https://www.transifex.com/projects/p/red-matrix/) and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. -### Translation Process +## Translation Process The strings used in the UI of Hubzilla is translated at [Transifex][1] and then included in the git repository at github. If you want to help with translation @@ -98,7 +98,7 @@ view/de/hmessages.po you would do the following. repository, push it to your fork of the Hubzilla repository at github and issue a pull request for that commit. -### Utilities +## Utilities Additional to the po2php script there are some more utilities for translation in the "util" directory of the Hubzilla source tree. If you only want to @@ -108,7 +108,7 @@ works. For further information see the utils/README file. -### Known Problems +## Known Problems * Hubzilla uses the language setting of the visitors browser to determain the language for the UI. Most of the time this works, but there are some known @@ -116,7 +116,7 @@ For further information see the utils/README file. * the early translations are based on the friendica translations, if you some rough translations please let us know or fix them at Transifex. -## To-be-organized information +# To-be-organized information **Here is how you can join us.** diff --git a/doc/toc.html b/doc/toc.html index 64eb93435..a2ebea318 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -417,7 +417,7 @@ if(pageName === linkName) { var tocUl = $(this).closest('li').append('
        ').find('ul'); tocUl.removeClass(); // Classes are automatically added to
          elements by something else - tocUl.toc({content: "#doco-content", headings: "h1,h2"}); + tocUl.toc({content: "#doco-content", headings: "h1"}); tocUl.addClass('toc-content'); if( $(window).height() > 499) { tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); -- cgit v1.2.3 From 82d09c288d3bdf88facd6a4c82d2a309efd7d3a1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Fri, 9 Dec 2016 13:29:41 -0800 Subject: bring back a few of the doc edits from overlapping checkins --- doc/about/about_hubzilla.bb | 6 +- doc/developer/api_zot.md | 241 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 240 insertions(+), 7 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index bbe7e1604..a4873f5fb 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -1,11 +1,11 @@ -[h1]Hubzilla Project[/h1] +[h1]Project Overview[/h1] -$Projectname is a decentralized communication network, which aims to provide communication that is censorship-resistant, privacy-respecting, and thus free from the oppressive claws of contemporary corporate communication giants. These giants function primarily as spy networks for paying clients of all sorts and types, in addition to monopolizing and centralizing the Internet; a feature that was not part of the original and revolutionary goals that produced the World Wide Web. +$Projectname is a decentralized community server providing communications, identity, and access control services which work together seamlessly across domains and connected websites. It allows anybody to publicly or [b]privately[/b] publish a range of web/media/personal content. The cross-domain privacy implementation is unique and somewhat revolutionary, as identity and access rights are negotiated by servers invisibly in the background. $Projectname is free and open source. It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers. It can be used to support communication between a few individuals, or scale to many thousands and more. -$Projectname aims to be skill and resource agnostic. It is easy to use by everyday computer users, as well as by systems administrators and developers. +$Projectname aims to be skill and resource agnostic. It is easy to use by everyday people, as well as by systems administrators and developers. How you use it depends on how you want to use it. diff --git a/doc/developer/api_zot.md b/doc/developer/api_zot.md index 26af72298..2458da8b2 100644 --- a/doc/developer/api_zot.md +++ b/doc/developer/api_zot.md @@ -14,13 +14,121 @@ Export channel data channel/stream ================================================================================ -Fetch conversation items +Fetch channel conversation items + +network/stream +================================================================================ + +Fetch network conversation items + files ================================================================================ -List file storage +List file storage (attach DB) + +GET /api/z/1.0/files + + +Options: + + - hash + return only entries matching hash (exactly) + + - filename + return only entries matching filename (substring) + + - filetype + return only entries matching filetype/mimetype (substring) + + - start + start at record (default 0) + + - records + number of records to return or 0 for unlimited + + + +Example: + +curl -u mychannel:mypassword https://xyz.macgirvin.com/api/z/1.0/files -d filetype=multipart/mixed + + +Returns: + + { + + "success": true, + "results": [ + { + "id": "1", + "aid": "1", + "uid": "2", + "hash": "44ee8b2a1a7f36dea07b93b7747a2383a1bc0fdd08339e8928bfcbe45f65d939", + "filename": "Profile Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-02 21:51:17", + "edited": "2016-01-02 21:51:17", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "12", + "aid": "1", + "uid": "2", + "hash": "71883f1fc64af33889229cbc79c5a056deeec5fc277d765f182f19073e1b2998", + "filename": "Cover Photos", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-15 00:24:33", + "edited": "2016-01-15 00:24:33", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + }, + { + "id": "16", + "aid": "1", + "uid": "2", + "hash": "f48f7ec3278499d1dd86b72c3207beaaf4717b07df5cc9b373f14d7aad2e1bcd", + "filename": "2016-01", + "filetype": "multipart/mixed", + "filesize": "0", + "revision": "0", + "folder": "", + "os_storage": "1", + "is_dir": "1", + "is_photo": "0", + "flags": "0", + "created": "2016-01-22 03:24:55", + "edited": "2016-01-22 03:26:57", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "" + } + ] + } + + + filemeta ================================================================================ @@ -30,7 +138,69 @@ Export file metadata for any uploaded file filedata ================================================================================ -Export file contents for any uploaded file +Provides the ability to download a file from cloud storage in chunks + +GET /api/z/1.0/filedata + + +Required: + + - file_id + attach.hash of desired file ('begins with' match) + + +Optional: + + - start + starting byte of returned data in file (counting from 0) + + - length + length (prior to base64 encoding) of chunk to download + + +Returns: + + attach (DB) structure with base64 encoded 'content' comprised of the desired chunk + + + +Example: + + https://xyz.macgirvin.com/api/z/1.0/filedata?f=&file_id=9f5217770fd&start=0&length=48 + +Returns: + + { + + "attach": { + "id": "107", + "aid": "1", + "uid": "2", + "hash": "9f5217770fd55d563bd77f84d534d8e119a187514bbd391714626cd9c0e60207", + "creator": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg", + "filename": "pcxtopbm.c", + "filetype": "application/octet-stream", + "filesize": "3934", + "revision": "0", + "folder": "", + "flags": "0", + "is_dir": "0", + "is_photo": "0", + "os_storage": "1", + "os_path": "", + "display_path": "", + "content": "LyogcGN4dG9wYm0uYyAtIGNvbnZlcnQgUEMgcGFpbnRicnVzaCAoLnBjeCkgZmls", + "created": "2016-07-24 23:13:01", + "edited": "2016-07-24 23:13:01", + "allow_cid": "", + "allow_gid": "", + "deny_cid": "", + "deny_gid": "", + "start": 0, + "length": 48 + } + + } file/export @@ -42,7 +212,70 @@ file albums ================================================================================ -List photo albums +Description: list photo albums + +GET /api/z/1.0/albums + + +Output: + + text - textual name + + total - number of photos in this album + + url - web URL + + urlencode - textual name, urlencoded + + bin2hex - textual name using bin2hex (which is used in the web URL link) + + +Example: + + + { + + "success": true, + "albums": [ + { + "text": "/", + "total": "2", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/", + "urlencode": "", + "bin2hex": "" + }, + { + "text": "2016-01", + "total": "6", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3031", + "urlencode": "2016-01", + "bin2hex": "323031362d3031" + }, + { + "text": "2016-02", + "total": "7", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/323031362d3032", + "urlencode": "2016-02", + "bin2hex": "323031362d3032" + }, + { + "text": "Cover Photos", + "total": "5", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/436f7665722050686f746f73", + "urlencode": "Cover+Photos", + "bin2hex": "436f7665722050686f746f73" + }, + { + "text": "Profile Photos", + "total": "26", + "url": "https://xyz.macgirvin.com/photos/hubzilla/album/50726f66696c652050686f746f73", + "urlencode": "Profile+Photos", + "bin2hex": "50726f66696c652050686f746f73" + } + ] + + } + photos -- cgit v1.2.3 From 6668fe02aaa00e7b89af6d22bc9ae2781c756f39 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Fri, 9 Dec 2016 22:18:23 -0500 Subject: Only display h1 headings in sticky side nav. Toggle display of detailed TOC at top of page. Introduce return to top button for small screens. --- doc/toc.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index a2ebea318..4ef79bd10 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -420,11 +420,11 @@ tocUl.toc({content: "#doco-content", headings: "h1"}); tocUl.addClass('toc-content'); if( $(window).height() > 499) { - tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); - } + tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); + } } }); - + }); -- cgit v1.2.3 From 65a26958f77f7a2cac670ec80f3a5a82c3aac95a Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Sat, 10 Dec 2016 21:33:29 +0100 Subject: fix embed-image for fullscreen mode and some adjustments for /help --- doc/toc.html | 64 ++++++++++++++++++++++++------------------------------------ 1 file changed, 26 insertions(+), 38 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 4ef79bd10..8f0261dc7 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -1,50 +1,38 @@ -
          +
          -
          -

          +
          +

          About -

          +

            @@ -54,11 +42,11 @@
          -
          -

          +
          +

          Members -

          +

            @@ -68,11 +56,11 @@
          -
          -

          +

            @@ -82,11 +70,11 @@
          -
          -

          +

            @@ -96,11 +84,11 @@
          -
          -

          +
          +

          Tutorials -

          +

            @@ -418,7 +406,7 @@ var tocUl = $(this).closest('li').append('
              ').find('ul'); tocUl.removeClass(); // Classes are automatically added to
                elements by something else tocUl.toc({content: "#doco-content", headings: "h1"}); - tocUl.addClass('toc-content'); + tocUl.addClass('toc-content sub-menu'); if( $(window).height() > 499) { tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); } -- cgit v1.2.3 From bfc6d95a7e35d6f6ee79cdd0c17f9e23c8b956af Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 10 Dec 2016 13:09:47 -0800 Subject: drug dealers have users --- doc/about/about_hubzilla.bb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index a4873f5fb..4162c65e4 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -15,11 +15,11 @@ In other words, $Projectname can run on any computing platform that comes with a Along the way, $Projectname offers a number of unique goodies: -[b]Single-click user identification:[/b] meaning you can access sites on $Projectname simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple user names with multiple passwords when accessing different sites online. +[b]Single-click identification:[/b] meaning you can access sites on $Projectname simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple login names with multiple passwords when accessing different sites online. [b]Cloning:[/b] of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address. You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in $Projectname). Now, should your primary hub go down, no worries, your contacts, posts[i]*[/i], and messages[i]*[/i] will automagically continue to be available and accessible under your cloned channel. [i](*: only posts and messages as from the moment you cloned your channel)[/i] -[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. No questions, no fuss. +[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. The member is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. No questions, no fuss. [h2]Additional Resources and Links[/h2] @@ -374,7 +374,7 @@ Nomadic identity, single sign-on, and $Projectname's decentralization of hubs, w As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit. -How does Zot do that? We call it [i]magic-auth[/i], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and user names for every different sight that someone might visit online. +How does Zot do that? We call it [i]magic-auth[/i], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and login names for every different sight that someone might visit online. You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control. @@ -386,7 +386,7 @@ Zot's identity layer allows you to provide fine-grained permissions to any conte Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control. -This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user databaseon your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. +This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user database on your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it. -- cgit v1.2.3 From 542e487b698435b6a39e1378a3259265b7a6f7c1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 10 Dec 2016 13:14:56 -0800 Subject: This needs a bit more word-smithing to be concise and also accurate; but I need to think about it some more. --- doc/about/about_hubzilla.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 4162c65e4..61f5dd586 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -19,7 +19,7 @@ Along the way, $Projectname offers a number of unique goodies: [b]Cloning:[/b] of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address. You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in $Projectname). Now, should your primary hub go down, no worries, your contacts, posts[i]*[/i], and messages[i]*[/i] will automagically continue to be available and accessible under your cloned channel. [i](*: only posts and messages as from the moment you cloned your channel)[/i] -[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. The member is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. No questions, no fuss. +[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. People have full control of their own data and content. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. [h2]Additional Resources and Links[/h2] -- cgit v1.2.3 From 73a41b16bee19d8cf4aa52426e12bfb7256d2187 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Mon, 12 Dec 2016 20:10:50 -0500 Subject: Make region_1 table of contents "unsticky" when width is less than 768px for better mobile support. --- doc/toc.html | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 8f0261dc7..0d342d25a 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -407,11 +407,20 @@ tocUl.removeClass(); // Classes are automatically added to
                  elements by something else tocUl.toc({content: "#doco-content", headings: "h1"}); tocUl.addClass('toc-content sub-menu'); - if( $(window).height() > 499) { + tocUl.attr('id', 'doco-side-toc'); + if( $(window).width() > 768) { tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); } } }); + + $( window ).resize(function() { + if($(window).width() < 768 ) { + $( "#doco-side-toc" ).unstick(); + } else { + $( "#doco-side-toc" ).sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); + } + }); }); -- cgit v1.2.3 From 61f105da6fcd10999178f40a1bdfea7b1cd388dc Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 15 Dec 2016 12:25:59 +0100 Subject: reworked doco navigation --- doc/toc.html | 525 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 246 insertions(+), 279 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 0d342d25a..7fad42b36 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -15,10 +15,6 @@ #region_1 .widget ul ul { list-style-type: none; } - - .toc-content { - background-color: white; - } .toc-content li, #doco-top-toc li { @@ -99,293 +95,272 @@
          @@ -393,7 +368,6 @@ // Generate the table of contents in the side nav menu (see view/tpl/help.tpl) $(document).ready(function () { - $(".panel-collapse.in").find('a').each(function(){ window.console.log($(this).attr('href')); var url = document.createElement('a'); @@ -407,21 +381,14 @@ tocUl.removeClass(); // Classes are automatically added to
            elements by something else tocUl.toc({content: "#doco-content", headings: "h1"}); tocUl.addClass('toc-content sub-menu'); - tocUl.attr('id', 'doco-side-toc'); - if( $(window).width() > 768) { - tocUl.sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); - } + tocUl.attr('id', 'doco-side-toc'); + } }); - $( window ).resize(function() { - if($(window).width() < 768 ) { - $( "#doco-side-toc" ).unstick(); - } else { - $( "#doco-side-toc" ).sticky({topSpacing:$('nav').outerHeight(true), zIndex: 1000}); - } - }); - + $(".widget").stick_in_parent({ + offset_top: $('nav').outerHeight(true) + }); }); -- cgit v1.2.3 From 7403f9f870e51a99a2a8674f6e7a1e91ebd48d42 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Fri, 16 Dec 2016 11:49:27 +0100 Subject: some fixes for doco nav --- doc/toc.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index 7fad42b36..ec566c02d 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -389,6 +389,22 @@ $(".widget").stick_in_parent({ offset_top: $('nav').outerHeight(true) }); + + $('#expand-aside').click(function() { + if($('main').hasClass('region_1-on')) { + $('body').css('overflow-x', 'hidden'); + } + else { + $('body').css('overflow-x', ''); + } + }); + $(window).scroll(function() { + if($('main').hasClass('region_1-on') && $(window).scrollLeft() > 5) { + $('#expand-aside-icon').toggleClass('fa-arrow-circle-right').toggleClass('fa-arrow-circle-left'); + $('main').toggleClass('region_1-on'); + $('body').css('overflow-x', ''); + } + }); }); -- cgit v1.2.3 From b8370cffb9a9f69ad87d489df6b73d7daa5434c0 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Fri, 16 Dec 2016 16:14:01 +0100 Subject: move the sticky-kit^Cquery plugin to /lib and see if we want this for the whole app --- doc/toc.html | 290 +---------------------------------------------------------- 1 file changed, 1 insertion(+), 289 deletions(-) (limited to 'doc') diff --git a/doc/toc.html b/doc/toc.html index ec566c02d..458f6ec84 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -93,277 +93,6 @@
          - - - -- cgit v1.2.3 From d4ab74b25eeccef4701f05a56165268e7a17038c Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Mon, 19 Dec 2016 22:12:08 -0500 Subject: Move headings down to start at H3 at Mario's direction --- doc/about/about_hub.bb | 4 +- doc/admin/administrator_guide.md | 48 +++---- doc/admin/hub_snapshots.md | 8 +- doc/dav_mount.bb | 3 - doc/developer/api_zot.md | 77 ++++++----- doc/developer/developer_guide.md | 22 +-- doc/member/member_faq.bb | 10 +- doc/member/member_guide.bb | 280 ++++++++++++++++++++++++++++----------- doc/toc.html | 2 +- 9 files changed, 286 insertions(+), 168 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hub.bb b/doc/about/about_hub.bb index dde8950e5..0c1082f51 100644 --- a/doc/about/about_hub.bb +++ b/doc/about/about_hub.bb @@ -1,7 +1,7 @@ -[h1]Site Info[/h1] +[h3]Site Info[/h3] [list][*][url=[baseurl]/siteinfo]Site Info[/url] [*][url=[baseurl]/siteinfo/json]Site Info (JSON format)[/url][/list] -[h1]Terms of Service[/h1] +[h3]Terms of Service[/h3] [list][*][url=[baseurl]/help/TermsOfService]Terms of Service for this hub[/url][/list] #include doc/SiteTOS.md; diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md index bb5c821ee..219673c50 100644 --- a/doc/admin/administrator_guide.md +++ b/doc/admin/administrator_guide.md @@ -1,5 +1,5 @@ -# Overview +### Overview $Projectname is more than a simple web application. It is a complex communications system which more closely resembles an email server @@ -16,7 +16,7 @@ websites. It will run on most any Linux VPS system. Windows LAMP platforms such as XAMPP and WAMP are not officially supported at this time however we welcome patches if you manage to get it working. -# Where to find more help +### Where to find more help If you encounter problems or have issues not addressed in this documentation, please let us know via the [Github issue tracker](https://github.com/redmatrix/hubzilla/issues). Please be as clear as you @@ -27,14 +27,14 @@ in existence we may have only limited ability to debug your PHP installation or acquire any missing modules * but we will do our best to solve any general code issues. -# Before you begin +### Before you begin -## Choose a domain name or subdomain name for your server +#### Choose a domain name or subdomain name for your server $Projectname can only be installed into the root of a domain or sub-domain, and can not be installed using alternate TCP ports. -## Decide if you will use SSL and obtain an SSL certificate before software installation +#### Decide if you will use SSL and obtain an SSL certificate before software installation You SHOULD use SSL. If you use SSL, you MUST use a "browser-valid" certificate. *You MUST NOT use self-signed certificates!* @@ -74,14 +74,14 @@ it is installed, and an existing directory in this location may prevent some of these services from working correctly. This should not be a problem with Apache, but may be an issue with nginx or other web server platforms. -# Deployment +### Deployment There are several ways to deploy a new hub. * Manual installation on an existing server * Automated installation on an existing server using a shell script * Automated deployment using an OpenShift virtual private server (VPS) -# Requirements +### Requirements * Apache with mod-rewrite enabled and "AllowOverride All" so you can use a local .htaccess file. Some folks have successfully used nginx and lighttpd. Example config scripts are available for these platforms in doc/install. @@ -111,7 +111,7 @@ PHP might differ from the _webserver_ version # Manual Installation # -## Unpack the $Projectname files into the root of your web server document area ### +#### Unpack the $Projectname files into the root of your web server document area ### If you copy the directory tree to your webserver, make sure that you include the hidden files like .htaccess. @@ -148,14 +148,14 @@ web-based administrative tools to function: * `view/theme` * `widget` -## Official addons -### Installation +#### Official addons +##### Installation Navigate to your webThen you should clone the addon repository (separately). We'll give this repository a nickname of 'hzaddons'. You can pull in other hubzilla addon repositories by giving them different nicknames:: cd mywebsite util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons -### Updating +##### Updating For keeping the addon tree updated, you should be on your top level website directory and issue an update command for that repository:: cd mywebsite @@ -167,10 +167,10 @@ Create searchable representations of the online documentation. You may do this cd mywebsite util/importdoc -# Automated installation via the .homeinstall shell script +### Automated installation via the .homeinstall shell script There is a shell script in (``.homeinstall/hubzilla-setup.sh``) that will install $Projectname and its dependencies on a fresh installation of Debian 8.3 stable (Jessie). It should work on similar Linux systems but your results may vary. -## Requirements +#### Requirements The installation script was originally designed for a small hardware server behind your home router. However, it has been tested on several systems running Debian 8.3: * Home-PC (Debian-8.3.0-amd64) @@ -183,7 +183,7 @@ The installation script was originally designed for a small hardware server behi * DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3) -## Overview of installation steps +#### Overview of installation steps 1. `apt-get install git` 1. `mkdir -p /var/www/html` 1. `cd /var/www/html` @@ -196,7 +196,7 @@ The installation script was originally designed for a small hardware server behi 1. `service apache2 reload` 1. Open your domain with a browser and step throught the initial configuration of $Projectname. -# Service Classes +### Service Classes Service classes allow you to set limits on system resources by limiting what individual accounts can do, including file storage and top-level post limits. Define custom service @@ -262,8 +262,8 @@ set the account that owns channel 'blogchan' to service class 'firstclass' (with * chatters_inroom - maximum chatters per room * access_tokens - maximum number of Guest Access Tokens per channel -# Theme management -## Repo management example +### Theme management +#### Repo management example 1. Navigate to your hub web root ``` @@ -280,9 +280,9 @@ set the account that owns channel 'blogchan' to service class 'firstclass' (with root@hub:/var/www# util/update_theme_repo DeadSuperHero ``` -# Channel Directory +### Channel Directory -## Keywords +#### Keywords There is a "tag cloud" of keywords that can appear on the channel directory page. If you wish to hide these keywords, which are drawn from the directory server, you @@ -296,9 +296,9 @@ empty: util/config system directory_server "" -# Upgrading from RedMatrix to $Projectname +### Upgrading from RedMatrix to $Projectname -## How to migrate an individual channel from RedMatrix to $Projectname +#### How to migrate an individual channel from RedMatrix to $Projectname 1. Clone the channel by opening an account on a $Projectname hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings. 1. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary. @@ -307,8 +307,8 @@ empty: 1. After successful import (check!) delete your channel on the old RedMatrix Server. 1. On the $Projectname server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. -# Troubleshooting -## Log files +### Troubleshooting +#### Log files There are three different log facilities. @@ -338,7 +338,7 @@ git checkout file.php To immediately clear out all the extra logging stuff you added. Use the information from this log and any detail you can provide from your investigation of the problem to file your bug report - unless your analysis points to the source of the problem. In that case, just fix it. -### Rotating log files +##### Rotating log files 1. Enable the **logrot** addon in the official [hubzilla-addons](https://github.com/redmatrix/hubzilla-addons) repo 1. Create a directory in your web root called `log` with webserver write permissions diff --git a/doc/admin/hub_snapshots.md b/doc/admin/hub_snapshots.md index 7e4ba95b2..ab0948aa8 100644 --- a/doc/admin/hub_snapshots.md +++ b/doc/admin/hub_snapshots.md @@ -1,4 +1,4 @@ -# Hub Snapshot Tools +### Hub Snapshot Tools Hubzilla developers frequently need to switch between branches that might have incompatible database schemas or content. The following two scripts create and @@ -7,7 +7,7 @@ root and the entire database state. Each script requires a config file called `hub-snapshot.conf` residing in the same folder and containing the specific directories and database details of your hub. -# Config +### Config The format of the config file is very strict. There must be no spaces between the variable name and the value. Replace only the content inside the quotes with your @@ -24,7 +24,7 @@ configuration. Save this file as `hub-snapshot.conf` alongside the scripts. # The target snapshot folder where the git repo will be initialized SNAPSHOTROOT="/root/snapshots/hubzilla/" -# Snapshot +### Snapshot Example usage: @@ -84,7 +84,7 @@ Example usage: exit 0 -# Restore +### Restore #!/bin/bash # Restore hub to a previous state. Input hub config and commit hash diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb index 0fd3d4691..94db18ac7 100644 --- a/doc/dav_mount.bb +++ b/doc/dav_mount.bb @@ -81,6 +81,3 @@ Unmount your file system, remount your file system, and try copying over a file If that still doesn't work, disable the cache. Note that this has a performance impact so should only be done if disabling locks didn't solve your problem. Edit the cache_size and set it to [code]cache_size 0[/code] and also set file_refresh to [code]file_refresh 0[/code]. Unmount your filesystem, remount your file system, and test it again. If it [i]still[/i] doesn't work, there is one more thing you can try. (This one is caused by a bug in older versions of dav2fs itself, so updating to a new version may also help). Enable weak etag dropping by setting [code]drop_weak_etags 1[/code]. Unmount and remount your filesystem to apply the changes. - -#include doc/macros/cloud_footer.bb; - diff --git a/doc/developer/api_zot.md b/doc/developer/api_zot.md index 2458da8b2..d46cc8860 100644 --- a/doc/developer/api_zot.md +++ b/doc/developer/api_zot.md @@ -1,30 +1,27 @@ -Zot API -======= +### Zot API The API endpoints detailed below are relative to `api/z/1.0`, meaning that if an API is listed as `channel/stream` the full API URL is `[baseurl]/api/z/1.0/channel/stream` -channel/export/basic -================================================================================ +### channel/export/basic Export channel data -channel/stream -================================================================================ +### channel/stream Fetch channel conversation items -network/stream -================================================================================ +### network/stream + Fetch network conversation items -files -================================================================================ +### files + List file storage (attach DB) @@ -130,13 +127,13 @@ Returns: -filemeta -================================================================================ +### filemeta + Export file metadata for any uploaded file -filedata -================================================================================ +### filedata + Provides the ability to download a file from cloud storage in chunks @@ -203,14 +200,14 @@ Returns: } -file/export -================================================================================ +### file/export + -file -================================================================================ +### file + + +### albums -albums -================================================================================ Description: list photo albums @@ -278,18 +275,18 @@ Example: -photos -================================================================================ +### photos + list photo metadata -photo -================================================================================ +### photo + -group -================================================================================ +### group + `GET /api/z/1.0/group` @@ -328,8 +325,8 @@ To use with API group_members, provide either 'group_id' from the id element ret } ] -group_members -================================================================================ +### group_members + `GET /api/z/1.0/group_members` @@ -461,8 +458,8 @@ group_member+abook+xchan (DB join) for each member of the privacy group ] -xchan -================================================================================ +### xchan + An xchan is a global location independent channel and is the primary record for a network identity. It may refer to channels on other websites, networks, or services. @@ -506,8 +503,8 @@ Returns: "deleted": "0" } -item/update -================================================================================ +### item/update + Create or update an item (post, activity, webpage, etc.) @@ -733,22 +730,22 @@ Returns: } -item/full -================================================================================ +### item/full + Get all data associated with an item -abook -================================================================================ +### abook + Connections -abconfig -================================================================================ +### abconfig + Connection metadata (such as permissions) -perm_allowed -================================================================================ +### perm_allowed + Check a permission for a given xchan diff --git a/doc/developer/developer_guide.md b/doc/developer/developer_guide.md index 7ec76714f..fa50de8a1 100644 --- a/doc/developer/developer_guide.md +++ b/doc/developer/developer_guide.md @@ -1,4 +1,4 @@ -# Who is a Hubzilla developer? Should I read this? +### Who is a Hubzilla developer? Should I read this? Anyone who contributes to making Hubzilla better is a developer. There are many different and important ways you can contribute to this amazing technology, _even if you do not know how to write code_. The software itself is only a part of the Hubzilla project. You can contribute by @@ -11,31 +11,31 @@ _Software_ developers are of course welcomed; there are so many great ideas to i This document will help you get started learning and contributing to Hubzilla. -# Versioning system +### Versioning system The versioning system is similar to the popular semantic versioning but less stringent. Given x.y.z, x changes yearly. y changes for "stable" monthly builds, and z increments when there are interface changes. We maintain our date and build numbers for medium grain version control (commits within a certain date range) and of course git revs for fine grained control. -# Git repository branches +### Git repository branches There are two official branches of the Hubzilla git repo. * The stable version is maintained on the **master** branch. The latest commit in this branch is considered to be suitable for production hubs. * Experimental development occurs on the **dev** branch, which is merged into **master** when it is deemed tested and stable enough. -# Developer tools and workflows +### Developer tools and workflows -## Hub Snapshots +#### Hub Snapshots -The [[Hub Snapshots]] page provides instructions and scripts for taking complete +The [hub snapshots](/help/admin/hub_snapshots) page provides instructions and scripts for taking complete snapshots of a hub to support switching between consistent and completely known states. This is useful to prevent situations where the content or database schema might be incompatible with the code. -# Translations +### Translations Our translations are managed through Transifex. If you wish to help out translating Hubzilla to another language, sign up on transifex.com, visit [https://www.transifex.com/projects/p/red-matrix/](https://www.transifex.com/projects/p/red-matrix/) and request to join one of the existing language teams or create a new one. Notify one of the core developers when you have a translation update which requires merging, or ask about merging it yourself if you're comfortable with git and PHP. We have a string file called 'messages.po' which is gettext compliant and a handful of email templates, and from there we automatically generate the application's language files. -## Translation Process +#### Translation Process The strings used in the UI of Hubzilla is translated at [Transifex][1] and then included in the git repository at github. If you want to help with translation @@ -98,7 +98,7 @@ view/de/hmessages.po you would do the following. repository, push it to your fork of the Hubzilla repository at github and issue a pull request for that commit. -## Utilities +#### Utilities Additional to the po2php script there are some more utilities for translation in the "util" directory of the Hubzilla source tree. If you only want to @@ -108,7 +108,7 @@ works. For further information see the utils/README file. -## Known Problems +#### Known Problems * Hubzilla uses the language setting of the visitors browser to determain the language for the UI. Most of the time this works, but there are some known @@ -116,7 +116,7 @@ For further information see the utils/README file. * the early translations are based on the friendica translations, if you some rough translations please let us know or fix them at Transifex. -# To-be-organized information +### To-be-organized information **Here is how you can join us.** diff --git a/doc/member/member_faq.bb b/doc/member/member_faq.bb index bb70dc4d9..9533cb557 100644 --- a/doc/member/member_faq.bb +++ b/doc/member/member_faq.bb @@ -1,10 +1,10 @@ -[h1]$Projectname FAQ[/h1] -[h2]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h2] +[h3]$Projectname FAQ[/h3] +[h4]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/h4] Short anser: No, there isn't. There are reasons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other $Projectname servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to $Projectname posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it. If a posting is public this is even harder, as $Projectname is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post. -[h2]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h2] +[h4]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/h4] Posts and photos/files are provided separately from the channel basic information. This is due to memory limitations dealing with years of conversations and photo archives. Posts and conversations can be synced separately from the basic channel information. Photos and file archives can be transferred using a plugin tool such as 'redfiles', which is currently listed as "experimental". When creating this feature we thought that keeping all your contacts was the most important task. Your friends have already seen your old content. Posts/conversations were next in priority and these may now be synced. Files and photos are the last bit to get completely working. Once we find someone willing to finish implementing this, it will be done. :) -[h2]I can't see private resources[/h2] +[h4]I can't see private resources[/h4] You have probably disabled third party cookies. You need to enable them for remote authentication to work. -[h2]There are a lot of foreign language posts. Let's auto-translate them.[/h2] +[h4]There are a lot of foreign language posts. Let's auto-translate them.[/h4] There are also a lot of [b]private[/b] foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called [b][i]Apertium[/i][/b] which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen. diff --git a/doc/member/member_guide.bb b/doc/member/member_guide.bb index 9824de390..53cc6b8c7 100644 --- a/doc/member/member_guide.bb +++ b/doc/member/member_guide.bb @@ -1,8 +1,8 @@ -[h1]Overview[/h1] +[h3]Overview[/h3] While many features and capabilities of $Projectname are familiar to people who have used social networking sites and blogging software, there are also quite a few new concepts and features that most people have not encountered before. Some of the new ideas are related to the decentralized nature of the grid; others are associated with the advanced permissions system that is necessary to protect your data privacy. The purpose of this guide is to help you understand how to create, configure, and use your nomadic identity. -[h1]Registration[/h1] +[h3]Registration[/h3] Not all $Projectname sites allow open registration. If registration is allowed, you will see a "Register" link immediately below the login prompts on the site home page. Following this link will take you to the site Registration page. On some sites it may redirect you to another site which allow registrations. As all $Projectname sites are linked, it does not matter where your account resides. @@ -71,46 +71,10 @@ See Also [zrl=[baseurl]/help/AdvancedSearch]Advanced Searching[/zrl] -[h2]Channels[/h2] +[h3]Account Permission Roles[/h3] -[h3]What are channels?[/h3] - -Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me". - -The most important features for a channel that represents "me" are: -[ul] -[*]Secure and private "spam free" communications - -[*]Identity and "single-signon" across the entire network - -[*]Privacy controls and permissions which extend to the entire network - -[*]Directory services (like a phone book) -[/ul] -In short, a channel that represents yourself is "me, on the internet". - -[h3]Creating channels[/h3] - -You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link. - -You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice. - -Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions. - -Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0][baseurl]/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts. - -[h3]The grid, permissions and delegation[/h3] - -The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts. - -As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl]. - -You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources. - -[h1]Account Permission Roles[/h1] - -[h2]Social[/h2] +[h4]Social[/h4] [b]Mostly Public[/b] @@ -126,7 +90,7 @@ By default all posts and published items are sent to your 'Friends' privacy grou By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. -[h2]Forum[/h2] +[h4]Forum[/h4] [b]Mostly Public[/b] @@ -142,7 +106,7 @@ By default all posts and published items are sent to the channel's 'Friends' pri By default all posts and published items are sent to your 'Friends' privacy group. New friends are added to this privacy group. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' privacy group. They are not publicly visible. -[h2]Feed[/h2] +[h4]Feed[/h4] [b]Public[/b] @@ -155,7 +119,7 @@ Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' privacy group. New connections are automatically added to this privacy group. Members must be manually approved by the channel owner. -[h2]Special[/h2] +[h4]Special[/h4] [b]Celebrity/Soapbox[/b] @@ -167,12 +131,48 @@ Listed in directory. Communications are by default public. Online presence is hi A public forum which allows members to post files/photos/webpages. -[h2]Custom/Expert Mode[/h2] +[h4]Custom/Expert Mode[/h4] Set all the privacy and permissions manually to suit your specific needs. -[h1]Connecting To Channels[/h1] +[h3]Channels[/h3] + +[h4]What are channels?[/h4] + +Channels are simply collections of content stored in one place. A channel can represent anything. It could represent you, a website, a forum, photo albums, anything. For most people, their first channel with be "Me". + +The most important features for a channel that represents "me" are: +[ul] +[*]Secure and private "spam free" communications + +[*]Identity and "single-signon" across the entire network + +[*]Privacy controls and permissions which extend to the entire network + +[*]Directory services (like a phone book) +[/ul] +In short, a channel that represents yourself is "me, on the internet". + +[h4]Creating channels[/h4] + +You will be required to create your first channel as part of the sign up process. You can also create additonal channels from the "Select channel" link. + +You will be asked to provide a channel name, and a short nick name. For a channel that represents yourself, it is a good idea to use your real name here to ensure your friends can find you, and connect to your channel. The short nickname will be used to generate a "webbie". This is a bit like a username, and will look like an email address, taking the form nickname@domain. You should put a little thought into what you want to use here. Imagine somebody asking for your webbie and having to tell them it is "llamas-are_kewl.123". "llamasarecool" would be a much better choice. + +Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions. + +Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0][baseurl]/channel/username[/observer] you will find your channel "stream". This is where your recent activity will appear, in reverse chronological order. If you post in the box marked "share", the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The "About" tab contains your "profile", the photos page contain photo albums, and the events page contains events share by both yourself and your contacts. + +[h4]The grid, permissions and delegation[/h4] + +The "Grid" page contains all recent posts from across $Projectname network, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts. + +As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for "Can write to my "public" file storage" than a personal account. For more information, see the [zrl=[baseurl]/help/roles]permissions section[/zrl]. + +You can also delegate control of your channels' posts and connections, but not its configurations, to another channel. That is done by editing a connection and assigning it the permission to administer your channel's resources. + +[h3]Connecting To Channels[/h3] Connections in $Projectname can take on a great many different meanings. But let's keep it simple, you want to be friends with somebody like you are familiar with from social networking. How do you do it? @@ -186,7 +186,7 @@ Visit their profile by clicking their photograph in the directory, matrix, or co You may also connect with any channel by visiting the "Connections" page of your site or the Directory and typing their "webbie" into the "Add New Connection" field. Use this method if somebody tells you their webbie and you wish to connect with them. A webbie looks like an email address; for example "bob@example.com". The process is the same as connecting via the "Connect" button - you will then be taken to the connection editor to set permissions. -[h2] Block/Ignore/Archive/Hide channels [/h2] +[h4] Block/Ignore/Archive/Hide channels [/h4] Channels in your address book can have statuses such as [i]blocked[/i], [i]ignored[/i], [i]archived[/i] and [i]hidden[/i]. From your connections page you can see tabs that display the channels with those statuses. From your edit connection pages you can change the statuses of a channel. @@ -200,23 +200,23 @@ Here's their meaning: [b]Archived:[/b] if a channel can't be reached for 30 days, it is automatically marked as archived. This keeps all the data but stops polling the channel for new information and removes it from autocomplete. If later you learn the channel has come back online, you may manually unarchive it. -[h2]Premium Channels[/h2] +[h4]Premium Channels[/h4] Some channels are designated "Premium Channels" and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel. -[h1]Permissions[/h1] +[h3]Permissions[/h3] Permissions in $Projectname are more complete than you may be used to. This allows us to define more fine graded relationships than the black and white "this person is my friend, so they can do everything" or "this person is not my friend, so they can't do anything" permissions you may find elsewhere. -[h2]Permission Roles[/h2] +[h4]Permission Roles[/h4] When you create a channel we allow you to select different 'roles' for that channel. These create an entire family of permissions and privacy settings that are appropriate for that role. Typical roles are "Social - mostly public", "Social - mostly private", "Forum - public" and many others. These bring a level of simplicity to managing permissions. Just choose a role and appropriate permissions are automatically applied. You can also choose 'Custom/Expert mode' and change any individual permission setting in any way you desire. -[h2]Default Permission Limits[/h2] +[h4]Default Permission Limits[/h4] There are a large number of individual permissions. These control everything from the ability to view your stream to the ability to chat with you. Every permission has a limit. The scope of these permissions varies from "Only me" to "Everybody on the internet" - though some scopes may not be available for some permissions. The limit applies to any published thing you create which has no privacy or access control. For example if you publish a photo and didn't select a specific audience with permission to view it, we apply the limit. These limits apply to everything within that permission rule, so you cannot apply a limit to one photo. The limit applies to all your photos. If all your photos are visible to everybody on the internet and you reduce the limit only to friends, [b]all[/b] of your photos will now be visible only to friends. -[h2]Access Control[/h2] +[h4]Access Control[/h4] Access Control is the preferred method of managing privacy in [i]most[/i] cases, rather than using permission limits. This creates lists of either connections or privacy groups (or both) and uses the access list to decide if a permission is allowed. An access list is attached to everything you publish. Unlike permission limits, if you change the access control list on a single photo, it doesn't affect any of your other photos. You can use privacy groups and a "default access control list" to create and automate the management of access control lists to provide any level of privacy you desire on anything you publish. @@ -281,13 +281,13 @@ Plugins/addons may provide special permission settings, so you may be offered ad If you have set any of these permissions to "only those I specifically allow", you may specify indivudal permissions on the connnection edit screen. -[h2]Affinity[/h2] +[h4]Affinity[/h4] The connection edit screen offers a slider to select a degree of friendship with the connnection (this tool is enabled through the "Extra Features" tab of your Settings page). Think of this as a measure of how much you like or dislike them. 1 is for people you like, whose posts you want to see all the time. 99 is for people you don't care for, and whose posts you might only wish to look at occasionally. Once you've assigned a value here, you can use the affinity tool on the matrix page to filter content based on this number. The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature. -[h1]Personal Cloud Storage[/h1] +[h3]Personal Cloud Storage[/h3] $Projectname provides an ability to store privately and/or share arbitrary files with friends. @@ -295,47 +295,173 @@ You may either upload files from your computer into your storage area, or copy t On many public servers there may be limits on disk usage. -[h2]File Attachments[/h2] +[h4]File Attachments[/h4] The quickest and easiest way to share files is through file attachments. In the row of icons below the status post editor is a tool to upload attachments. Click the tool, select a file and submit. After the file is uploaded, you will see an attachment code placed inside the text region. Do not edit this line or it may break the ability for your friends to see the attachment. You can use the post permissions dialogue box or privacy hashtags to restrict the visibility of the file - which will be set to match the permissions of the post your are sending. To delete attachments or change the permissions on the stored files, visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username replacing username with the nickname you provided during channel creation[/observer]. -[h2]Web Access[/h2] +[h4]Web Access[/h4] Your files are visible on the web at the location [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] to anybody who is allowed to view them. If the viewer has sufficient privileges, they may also have the ability to create new files and folders/directories. -[h2]WebDAV access[/h2] +[h4]WebDAV access[/h4] See: [zrl=[baseurl]/help/member/member_guide#Cloud_Desktop_Clients]Cloud Desktop Clients[/zrl] -[h2]Permissions[/h2] +[h4]Permissions[/h4] When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit [observer=1][baseurl]/cloud/[observer.webname][/observer][observer=0][baseurl]/cloud/username[/observer] select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a "personal" or "private" folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for "family" and "friends" with permission granted to appropriate privacy groups. -[h2]Cloud Desktop Clients[/h2] +[h4]Cloud Desktop Clients - Windows[/h4] + +RedDav using Windows 7 graphical user interface wizard: +1. Left-click the Start-button to open the start menu. +2. Right-click the My computer icon to access its menu. +3. Left-click Map network drive... to open the connection dialog wizard. +4. Type #^[url=https://example.net/dav/your_channel_name]https://example.net/dav/your_channel_name[/url] in the textbox and click the Complete button where "example.net" is the URL of your hub. +5. Type your Hubzilla account's user name. IMPORTANT - NO at-sign or domain name. +6. Type your Hubzilla password + +[h4]Cloud Desktop Clients - Linux[/h4] + +[h5]Mount as a filesystem[/h5] + +[b]Mounting As A Filesystem[/b] + +To install your cloud directory as a filesystem, you first need davfs2 installed. 99% of the time, this will be included in your distributions repositories. In Debian + +[code]apt-get install davfs2[/code] + +If you want to let normal users mount the filesystem + +[code] dpkg-reconfigure davfs2[/code] + +and select "yes" at the prompt. + +Now you need to add any user you want to be able to mount dav to the davfs2 group + +[code]usermod -aG davfs2 <DesktopUser>[/code] + +[b]Note:[/b] on some systems the user group may be different, i.e. - "network" +on Arch Linux. If in doubt, check the davfs documentation for your +particular OS. + +Edit /etc/fstab + +[code]nano /etc/fstab[/code] + + to include your cloud directory by adding + +[code] +[baseurl]/dav/ /mount/point davfs user,noauto,uid=<DesktopUser>,file_mode=600,dir_mode=700 0 1 +[/code] + +Where [baseurl] is the URL of your hub, /mount/point is the location you want to mount the cloud, and <DesktopUser> is the user you log in to one your computer. Note that if you are mounting as a normal user (not root) the mount point must be in your home directory. + +For example, if I wanted to mount my cloud to a directory called 'cloud' in my home directory, and my username was bob, my fstab would be + +[code][baseurl]/dav/ /home/bob/cloud davfs user,noauto,uid=bob,file_mode=600,dir_mode=700 0 1[/code] + +Now, create the mount point. + +[code]mkdir /home/bob/cloud[/code] + +and also create a directory file to store your credentials + +[code]mkdir /home/bob/.davfs2[/code] + +Create a file called 'secrets' + +[code]nano /home/bob/.davfs2/secrets[/code] + +and add your cloud login credentials + +[code] +[baseurl]/dav <username> <password> +[/code] -[h3]Windows Clients[/h3] -[list] -[*][zrl=[baseurl]/help/dav_windows]Windows Internal Client[/zrl] -[/list] +Where <username> and <password> are the username and password [i]for your hub[/i]. -[h3]Linux Clients[/h3] -[list] -[*][zrl=[baseurl]/help/dav_mount]Command Line as a Filesystem[/zrl] -[*][zrl=[baseurl]/help/dav_dolphin]Dolphin[/zrl] -[*][zrl=[baseurl]/help/dav_konqueror]Konqueror[/zrl] -[*][zrl=[baseurl]/help/dav_nautilus]Nautilus[/zrl] -[*][zrl=[baseurl]/help/dav_nemo]Nemo[/zrl] -[/list] +Don't let this file be writeable by anyone who doesn't need it with -[h3]Server Notes[/h3] +[code]chmod 600 /home/bob/.davfs2/secrets[/code] + +Finally, mount the drive. + +[code]mount [baseurl]/dav[/code] + +You can now find your cloud at /home/bob/cloud and use it as though it were part of your local filesystem - even if the applications you are using have no dav support themselves. + +[b]Troubleshooting[/b] + +With some webservers and certain configurations, you may find davfs2 creating files with 0 bytes file size where other clients work just fine. This is generally caused by cache and locks. If you are affected by this issue, you need to edit your davfs2 configuration. + +[code]nano /etc/davfs2/davfs2.conf[/code] + +Your distribution will provide a sample configuration, and this file should already exist, however, most of it will be commented out with a # at the beginning of the line. + +First step is to remove locks. + +Edit the use_locks line so it reads [code]use_locks 0[/code]. + +Unmount your file system, remount your file system, and try copying over a file from the command line. Note you should copy a new file, and not overwrite an old one for this test. Leave it a minute or two then do [code]ls -l -h[/code] and check the file size of your new file is still greater than 0 bytes. If it is, stop there, and do nothing else. + +If that still doesn't work, disable the cache. Note that this has a performance impact so should only be done if disabling locks didn't solve your problem. Edit the cache_size and set it to [code]cache_size 0[/code] and also set file_refresh to [code]file_refresh 0[/code]. Unmount your filesystem, remount your file system, and test it again. + +If it [i]still[/i] doesn't work, there is one more thing you can try. (This one is caused by a bug in older versions of dav2fs itself, so updating to a new version may also help). Enable weak etag dropping by setting [code]drop_weak_etags 1[/code]. Unmount and remount your filesystem to apply the changes. + + +[h5]Dolphin[/h5] +Visit webdavs://example.com/dav where "example.com" is the URL of your hub. + +When prompted for a username and password, enter your channel name (the first part of your webbie - no @ or domain name) and password for your normal account. + +Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication. + +[h5]Konqueror[/h5] + +Simply visit webdavs://example.com/dav after logging in to your hub, where "example.com" is the URL of your hub. + +No further authentication is required if you are logged in to your hub in the normal manner. + +Additionally, if one has authenticated at a different hub during their normal browser session, your identity will be passed to the cloud for these hubs too - meaning you can access any private files on any server, as long as you have permissions to see them, as long as you have visited that site earlier in your session. + +This functionality is normally restricted to the web interface, and is not available to any desktop software other than KDE. + +[h5]Nautilus[/h5] + +1. Open a File browsing window (that's Nautilus) +2. Select File > Connect to server from the menu +3. Type davs://<domain_name>/dav/<your_channelname> and click Connect +4. You will be prompted for your channel name (same as above) and password +5. Your personal DAV directory will be shown in the window + +[h5]Nemo[/h5] + +For (file browser) Nemo 1.8.2 under Linux Mint 15, Cinnamon 1.8.8. Nemo ist the standard file browser there. + +1st way +type "davs://<domain_name>/dav/<your_channelname>" in the address bar. + +2nd way +Menu > file > connect to server +Fill the dialog +- Server: hubzilla_domain_name +- Type: Secure WebDAV (https) +- Folder: /dav +- Username: yourchannelname +- Password: yourpassword + +Once open you can set a bookmark. + +[h5]Server Notes[/h5] Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms. -[h1]Remove Channel or Account[/h1] +[h3]Remove Channel or Account[/h3] -[h2]Remove Channel[/h2] +[h4]Remove Channel[/h4] Go to the bottom of your channel settings page or visit the URL: @@ -343,11 +469,11 @@ Go to the bottom of your channel settings page or visit the URL: You will need to confirm your password and the channel you are currently logged into will be removed. -This is irreversible. +[hl][i][b]This is irreversible.[/b][/i][/hl] If you have identity clones on other hubs this only removes by default the channel instance which exists on this hub. -[h2]Remove Account[/h2] +[h4]Remove Account[/h4] Go to the bottom of your account settings page or visit the URL: @@ -355,8 +481,6 @@ Go to the bottom of your account settings page or visit the URL: You will need to confirm your password and the account you are currently logged into will be removed. -This is irreversible. +[hl][i][b]This is irreversible.[/b][/i][/hl] All your channels will be deleted. If you have identity clones on other hubs this only removes by default the channels instances which exists on this hub. - -#include doc/macros/main_footer.bb; diff --git a/doc/toc.html b/doc/toc.html index 458f6ec84..597a2c2c5 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -108,7 +108,7 @@ if(pageName === linkName) { var tocUl = $(this).closest('li').append('
            ').find('ul'); tocUl.removeClass(); // Classes are automatically added to
              elements by something else - tocUl.toc({content: "#doco-content", headings: "h1"}); + tocUl.toc({content: "#doco-content", headings: "h3"}); tocUl.addClass('toc-content sub-menu'); tocUl.attr('id', 'doco-side-toc'); -- cgit v1.2.3 From 3d18f1447ef22b297415fe1e1ce50b885c6f2e43 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Mon, 19 Dec 2016 22:20:45 -0500 Subject: More heading work and some content rearrangement. --- doc/about/about_hubzilla.bb | 123 +++++++++++++++++------------------- doc/tutorials/personal_channel.html | 12 ++-- 2 files changed, 63 insertions(+), 72 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 61f5dd586..1117fd25a 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -1,8 +1,18 @@ -[h1]Project Overview[/h1] +[h3]Project Overview[/h3] $Projectname is a decentralized community server providing communications, identity, and access control services which work together seamlessly across domains and connected websites. It allows anybody to publicly or [b]privately[/b] publish a range of web/media/personal content. The cross-domain privacy implementation is unique and somewhat revolutionary, as identity and access rights are negotiated by servers invisibly in the background. + +$Projectname provides distributed web publishing and social communications with [b]decentralised permissions[/b]. + +So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily [i]everybody[/i] on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network. + +$Projectname combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher. + +$Projectname is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools. + + $Projectname is free and open source. It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers. It can be used to support communication between a few individuals, or scale to many thousands and more. $Projectname aims to be skill and resource agnostic. It is easy to use by everyday people, as well as by systems administrators and developers. @@ -22,7 +32,7 @@ Along the way, $Projectname offers a number of unique goodies: [b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. People have full control of their own data and content. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. -[h2]Additional Resources and Links[/h2] +[h4]Additional Resources and Links[/h4] For more detailed, technical information about Zot, check out the following links: [list] [*][url=http://hubzilla.org]Hubzilla project website[/url] @@ -30,10 +40,10 @@ For more detailed, technical information about Zot, check out the following link [*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url] [/list] -[h2]$Projectname Governance[/h2] +[h4]$Projectname Governance[/h4] Governance relates to the management of a project and particularly how this relates to conflict resolution. -[h3]Community Governance[/h3] +[h5]Community Governance[/h5] The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: [ol] @@ -56,10 +66,10 @@ Community Voting does not always provide a pleasant outcome and can generate pol -[h2]Privacy Policy[/h2] +[h4]Privacy Policy[/h4] -[h3]Summary[/h3] +[h5]Summary[/h5] Q: Who can see my content? @@ -71,7 +81,7 @@ Q: Can my content be censored? A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws. -[h3]Definitions[/h3] +[h5]Definitions[/h5] **$Projectname** @@ -85,7 +95,7 @@ An individual computer or server connected to $Projectname. These are provided b The system operator of an individual hub. -[h3]Policies[/h3] +[h5]Policies[/h5] **Public Information** @@ -109,7 +119,7 @@ Comments to posts that were created by others and posts which are designated as $Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator. -[h3]Identity Privacy[/h3] +[h5]Identity Privacy[/h5] Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible. @@ -121,7 +131,7 @@ A decentralized identity has a lot of advantages and gives you al lot of interes * You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set. -[h3]Censorship[/h3] +[h5]Censorship[/h5] $Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends. @@ -131,32 +141,13 @@ $Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 da If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences. -[h1]Features[/h1] - -[h2]$Projectname in a Nutshell[/h2] - -TL;DR - -$Projectname provides distributed web publishing and social communications with [b]decentralised permissions[/b]. - -So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily [i]everybody[/i] on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network. - -$Projectname combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher. - -$Projectname is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools. - -[h2]$Projectname Features[/h2] - +[h3]Features[/h3] $Projectname is a general-purpose web publishing and communication network, with several unique features. It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators. This page lists some of the core features of $Projectname that are bundled with the official release. As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members. -[h2]Built for Privacy and Freedom[/h2] - -One of the design goals of $Projectname is to enable easy communication on the web, while preserving privacy, if so desired by members. To achieve this goal, $Projectname includes a number of features allowing arbitrary levels of privacy: - -[h3]Affinity Slider[/h3] +[h4]Affinity Slider[/h4] When adding connnections in $Projectname, members have the option of assigning "affinity" levels (how close your friendship is) to the new connection. For example, when adding someone who happens to be a person whose blog you follow, you could assign their channel an affinity level of "Acquaintances". @@ -166,11 +157,11 @@ At this point, $Projectname [i]Affinity Slider[/i] tool, which usually appears a The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness. -[h3]Connection Filtering[/h3] +[h4]Connection Filtering[/h4] You have the ability to control precisely what appears in your stream using the optional "Connection Filter". When enabled, the Connection Editor provides inputs for selecting criteria which needs to be matched in order to include or exclude a specific post from a specific channel. Once a post has been allowed, all comments to that post are allowed regardless of whether they match the selection criteria. You may select words that if present block the post or ensure it is included in your stream. Regular expressions may be used for even finer control, as well as hashtags or even the detected language of the post. -[h3]Access Control Lists[/h3] +[h4]Access Control Lists[/h4] When sharing content, members have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names. @@ -178,45 +169,45 @@ Once sent, the message will be viewable only by the sender and the selected reci Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files. -[h3]Single Sign-on[/h3] +[h4]Single Sign-on[/h4] Access Control Lists work for all channels in the grid due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other $Projectname sites and used to control access to private resources. You login once to your home hub. After that, authentication to all $Projectname resources is "magic". -[h3]WebDAV enabled File Storage[/h3] +[h4]WebDAV enabled File Storage[/h4] Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of $Projectname members (including some third party network members) or make them public. -[h3]Photo Albums[/h3] +[h4]Photo Albums[/h4] Store photos in albums. All your photos may be protected by Access Control Lists. -[h3]Events Calendar[/h3] +[h4]Events Calendar[/h4] Create and manage events and tasks, which may also be protected with Access Control Lists. Events can be imported/exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person. Events are normally created with attendance counters so your friends and connections can RSVP instantly. -[h3]Chatrooms[/h3] +[h4]Chatrooms[/h4] You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins. -[h3]Webpage Building[/h3] +[h4]Webpage Building[/h4] $Projectname has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience. -[h3]Apps[/h3] +[h4]Apps[/h4] Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in $Projectname are free and can be created easily by those with no programming skills. -[h3]Layout[/h3] +[h4]Layout[/h4] Page layout is based on a description language called Comanche. $Projectname is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments". -[h3]Bookmarks[/h3] +[h4]Bookmarks[/h4] Share and save/manage bookmarks from links provided in conversations. -[h3]Private Message Encryption and Privacy Concerns[/h3] +[h4]Private Message Encryption and Privacy Concerns[/h4] Private mail is stored in an obscured format. While this is not bullet-proof it typically prevents casual snooping by the site administrator or ISP. @@ -231,7 +222,7 @@ Private messages may be retracted (unsent) although there is no guarantee the re Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site. -[h3]Service Federation[/h3] +[h4]Service Federation[/h4] In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as $Projectname and may present privacy risks. @@ -239,21 +230,21 @@ There is also experimental support for OpenID authentication which may be used i Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel. -[h3]Privacy Groups[/h3] +[h4]Privacy Groups[/h4] Our implementation of privacy groups is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by selected groups, and automatically set the outbound Access Control List to only those in that privacy group when you post. You may over-ride this at any time (prior to sending the post). -[h3]Directory Services[/h3] +[h4]Directory Services[/h4] We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal $Projectname sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays). -[h3]TLS/SSL[/h3] +[h4]TLS/SSL[/h4] For $Projectname hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL. Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways. Private communications are consequently encrypted at a higher level before sending offsite. -[h3]Channel Settings[/h3] +[h4]Channel Settings[/h4] When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels. @@ -270,12 +261,12 @@ The options are: - Anybody on the Internet. -[h3]Public and Private Forums[/h3] +[h4]Public and Private Forums[/h4] Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members. -[h3]Account Cloning[/h3] +[h4]Account Cloning[/h4] Accounts in $Projectname are referred to as [i]nomadic identities[/i], because a member's identity is not bound to the hub where the identity was originally created. For example, when you create a Facebook or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com. @@ -295,53 +286,53 @@ $Projectname offers interesting new possibilities for privacy. You can read more Some caveats apply. For a full explanation of identity cloning, read the <HOW TO CLONE MY IDENTITY>. -[h3]Multiple Profiles[/h3] +[h4]Multiple Profiles[/h4] Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people. This means that the profile (and site content) your beer-drinking buddies see may be different than what your co-workers see, and also completely different from what is visible to the general public. -[h3]Account Backup[/h3] +[h4]Account Backup[/h4] Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s). Backups can then be used to clone or restore a profile. -[h3]Account Deletion[/h3] +[h4]Account Deletion[/h4] Accounts can be immediately deleted by clicking on a link. That's it. All associated content is then deleted from the grid (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical. -[h3][size=20]Content Creation[/h2] +[h4]Content Creation[/h4] -[h3]Writing Posts[/h3] +[h4]Writing Posts[/h4] $Projectname supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in $Projectname. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for $Projectname had some serious issues and has since been removed. We are currently looking for a replacement. When creating "Websites", content may be entered in HTML, Markdown, BBcode, and/or plain text. -[h3]Deletion of content[/h3] +[h4]Deletion of content[/h4] Any content created in $Projectname remains under the control of the member (or channel) that originally created it. At any time, a member can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot ($Projectname communication and authentication protocol). -[h3]Media[/h3] +[h4]Media[/h4] Similar to any other modern blogging system, social network, or a micro-blogging service, $Projectname supports the uploading of files, embedding of videos, linking web pages. -[h3]Previewing/Editing[/h3] +[h4]Previewing/Editing[/h4] Post can be previewed prior to sending and edited after sending. -[h3]Voting/Consensus[/h3] +[h4]Voting/Consensus[/h4] Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys. -[h3]Extending $Projectname[/h3] +[h4]Extending $Projectname[/h4] $Projectname can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins. -[h3]API[/h3] +[h4]API[/h4] An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to $Projectname. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. -[h1]What is Zot?[/h1] +[h3]What is Zot?[/h3] Zot is the protocol that powers $Projectname, providing three core capabilities: Communications, Identity, and Access Control. @@ -350,7 +341,7 @@ The functionality it provides can also be described as follows: - a relationship online is just a bunch of permissions - the internet is just another folder -[h2]Communications[/h2] +[h4]Communications[/h4] Zot is a revolutionary protocol which provides [i]decentralised communications[/i] and [i]identity management[/i] across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality. @@ -360,7 +351,7 @@ Zot allows a wide array of background services in the grid, from offering friend You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of [i]decentralized identity[/i] services. -[h2]Identity[/h2] +[h4]Identity[/h4] Zot's identity layer is unique. It provides [i]invisible single sign-on[/i] across all sites in the grid. @@ -380,7 +371,7 @@ You login only once on your home hub (or any nomadic backup hub you have chosen) You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it. -[h2]Access Control[/h2] +[h4]Access Control[/h4] Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create. @@ -391,7 +382,7 @@ This type of control is available on large corporate providers such as Facebook Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it. -[h1]Credits[/h1] +[h3]Credits[/h3] Thanks to all who have helped and contributed to the project and its predecessors over the years. It is possible we missed in your name but this is unintentional. We also thank the community and diff --git a/doc/tutorials/personal_channel.html b/doc/tutorials/personal_channel.html index 3b1fe40ba..f2ad87077 100644 --- a/doc/tutorials/personal_channel.html +++ b/doc/tutorials/personal_channel.html @@ -3,7 +3,7 @@ channel for the first time. It introduces some of the tools and features related to a personal channel in a natural way.

              -

              Create a new channel

              +

              Create a new channel

              When you log in for the first time after registering, you must create a channel. (Alternatively you can load https://grid.reticu.li/new_channel)

              @@ -15,7 +15,7 @@ Typically if this is a personal channel that represents you, select a So with a level of default privacy that you are comfortable with. If you are unsure, select Social - Restricted.

              -

              Configure your channel features

              +

              Configure your channel features

              When your new channel is created you are directed to the channel settings page. Take the time to look around at all the settings pages to familiarize yourself with @@ -27,7 +27,7 @@ your selections.

              imageimageimageimage

              -

              Add a profile photo

              +

              Add a profile photo

              Navigate to your channel home by clicking the "Home" icon on the left side of the navbar, and then select the About tab to view your profile.

              @@ -54,7 +54,7 @@ profile pic has been automatically posted.

              image

              -

              Compose a post

              +

              Compose a post

              Go to your channel home and open the post editor by pressing the Share textbox at the top of the channel "wall". Enter a message, and then drag-and-drop an image @@ -73,7 +73,7 @@ so you can specify exactly who can access this post.

              image

              -

              Use an uploaded image as a channel cover photo

              +

              Use an uploaded image as a channel cover photo

              One way to add some pizzazz your channel is to add a cover photo that visitors will see when they load your channel page. Hubzilla's integrated cloud file system @@ -97,7 +97,7 @@ channel page will fade in as you scroll down.

              image

              -

              Make a connection

              +

              Make a connection

              Making connections between channels to share things is what Hubzilla is all about. Making a connection is simple. If you do not already know how to reach a channel's home -- cgit v1.2.3 From 6491e30a80f25ee42a757b1f9e07ffd3ffa2801a Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Tue, 20 Dec 2016 11:37:57 +0100 Subject: some changes to heading sizes to make some sense in the doco (this will undergo some refinement in the next release cycle when we possibly upgrade to bootstrap 4) and get rid of the accordion for now. --- doc/admin/administrator_guide.md | 6 +++--- doc/toc.html | 27 +++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) (limited to 'doc') diff --git a/doc/admin/administrator_guide.md b/doc/admin/administrator_guide.md index 219673c50..b7056e7e3 100644 --- a/doc/admin/administrator_guide.md +++ b/doc/admin/administrator_guide.md @@ -109,9 +109,9 @@ PHP might differ from the _webserver_ version * Installation into a top-level domain or sub-domain (without a directory/path component in the URL) is REQUIRED. -# Manual Installation # +### Manual Installation -#### Unpack the $Projectname files into the root of your web server document area ### +#### Unpack the $Projectname files into the root of your web server document area If you copy the directory tree to your webserver, make sure that you include the hidden files like .htaccess. @@ -342,4 +342,4 @@ To immediately clear out all the extra logging stuff you added. Use the informa 1. Enable the **logrot** addon in the official [hubzilla-addons](https://github.com/redmatrix/hubzilla-addons) repo 1. Create a directory in your web root called `log` with webserver write permissions -1. Go to the **logrot** admin settings and enter this folder name as well as the max size and number of retained log files. \ No newline at end of file +1. Go to the **logrot** admin settings and enter this folder name as well as the max size and number of retained log files. diff --git a/doc/toc.html b/doc/toc.html index 597a2c2c5..6090c4ace 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -7,11 +7,19 @@ margin: 3px 0px 10px 10px; } - #doco-content h1 { - border-bottom: #cccccc thin solid; + #doco-content h3 { + border-bottom: #ccc 3px solid; padding-bottom: 0.3em; } + + #doco-content h4 { + text-decoration: underline; + } + #doco-content h5 { + text-decoration: underline; + } + #region_1 .widget ul ul { list-style-type: none; } @@ -26,8 +34,7 @@

              - - About + About

              @@ -40,8 +47,7 @@

              - - Members + Members

              @@ -54,8 +60,7 @@

              - - Administrators + Administrators

              @@ -68,8 +73,7 @@

              - - Developers + Developers

              @@ -82,8 +86,7 @@

              - - Tutorials + Tutorials

              -- cgit v1.2.3 From 1ee5dba9b3786fa9125a15bd72fa3337caa034f5 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 21 Dec 2016 15:00:04 -0500 Subject: Separating Hubzilla project info from the initial About Hubzilla page. Heavily revised content. --- doc/about/about_hubzilla.bb | 245 ++++-------------------------------------- doc/about/hubzilla_project.bb | 185 +++++++++++++++++++++++++++++++ doc/toc.html | 3 +- 3 files changed, 205 insertions(+), 228 deletions(-) create mode 100644 doc/about/hubzilla_project.bb (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 1117fd25a..6acbabd8e 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -1,146 +1,27 @@ +[h3]What is Hubzilla?[/h3] +$Projectname is a [b]free and open source[/b] set of web applications and services running on a special kind of web server, called a "hub", that can connect to other hubs in a decentralized network we like to call "the grid", providing sophisticated communications, identity, and access control services which work together seamlessly across domains and independent websites. It allows anybody to publicly or [b]privately[/b] publish content via "channels", which are the fundamental, cryptographically secured identities that provide authentication independently of the hubs which host them. This revolutionary liberation of online identity from individual servers and domains is called "nomadic identity", and it is powered by the Zot protocol, a new framework for decentralized access control with fine-grained, extensible permissions. + +[h3]Right... so what is Hubzilla?[/h3] +From the practical perspective of hub members who use the software, $Projectname offers a variety of familiar, integrated web apps and services, including: +[ul] +[li]social networking discussion threads[/li] +[li]cloud file storage[/li] +[li]calendar and contacts (with CalDAV and CardDAV support)[/li] +[li]webpage hosting with a content management system[/li] +[li]wiki[/li] +[li]and more...[/li][/ul] +While all of these apps and services can be found in other software packages, only $Projectname allows you to set permissions for groups and individuals who may not even have accounts on your hub! Currently, if you want to share things privately on the internet, the people you share with must have accounts on the server hosting your data; otherwise, there is no robust way for your server to [i]authenticate[/i] visitors to the site to know whether to grant them access. + +[h3]Software Stack[/h3] +The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools. -[h3]Project Overview[/h3] - -$Projectname is a decentralized community server providing communications, identity, and access control services which work together seamlessly across domains and connected websites. It allows anybody to publicly or [b]privately[/b] publish a range of web/media/personal content. The cross-domain privacy implementation is unique and somewhat revolutionary, as identity and access rights are negotiated by servers invisibly in the background. - - -$Projectname provides distributed web publishing and social communications with [b]decentralised permissions[/b]. - -So what exactly are "decentralised permissions"? They give me the ability to share something on my website (photos, media, files, webpages, etc.) with specific people on completely different websites - but not necessarily [i]everybody[/i] on those websites; and they do not need a password on my website and do not need to login to my website to view the things I've shared with them. They have one password on their own website and "magic authentication" between affiliated websites in the network. Also, as it is decentralised, there is no third party which has the ability to bypass permissions and see everything in the network. - -$Projectname combines many features of traditional blogs, social networking and media, content management systems, and personal cloud storage into an easy to use framework. Each node in the grid can operate standalone or link with other nodes to create a super-network; leaving privacy under the control of the original publisher. - -$Projectname is an open source webserver application written originally in PHP/MySQL and is easily installable by those with basic website administration skills. It is also easily extended via plugins and themes and other third-party tools. - - -$Projectname is free and open source. It is designed to scale from a $35 Raspberry Pi, to top of the line AMD and Intel Xeon-powered multi-core enterprise servers. It can be used to support communication between a few individuals, or scale to many thousands and more. - -$Projectname aims to be skill and resource agnostic. It is easy to use by everyday people, as well as by systems administrators and developers. - -How you use it depends on how you want to use it. - -It is written in the PHP scripting language, thus making it trivial to install on any hosting platform in use today. This includes self-hosting at home, at hosting providers such as [url=http://mediatemple.com/]Media Temple[/url] and [url=http://www.dreamhost.com/]Dreamhost[/url], or on virtual and dedicated servers, offered by the likes of [url=https://www.linode.com]Linode[/url], [url=http://greenqloud.com]GreenQloud[/url] or [url=https://aws.amazon.com]Amazon AWS[/url]. - -In other words, $Projectname can run on any computing platform that comes with a web server, a MySQL-compatible database, and the PHP scripting language. - -Along the way, $Projectname offers a number of unique goodies: - -[b]Single-click identification:[/b] meaning you can access sites on $Projectname simply by clicking on links to remote sites. Authentication just happens automagically behind the scenes. Forget about remembering multiple login names with multiple passwords when accessing different sites online. - -[b]Cloning:[/b] of online identities. Your online presence no longer has to be tied to a single server, domain name or IP address. You can clone and import your identity (or channel as we call it) to another server (or, a hub as servers are known in $Projectname). Now, should your primary hub go down, no worries, your contacts, posts[i]*[/i], and messages[i]*[/i] will automagically continue to be available and accessible under your cloned channel. [i](*: only posts and messages as from the moment you cloned your channel)[/i] - -[b]Privacy:[/b] $Projectname identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. People have full control of their own data and content. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. - - -[h4]Additional Resources and Links[/h4] -For more detailed, technical information about Zot, check out the following links: +[h3]Additional Resources and Links[/h3] [list] [*][url=http://hubzilla.org]Hubzilla project website[/url] [*][url=https://github.com/redmatrix/hubzilla]Hubzilla core code repository[/url] [*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url] [/list] -[h4]$Projectname Governance[/h4] -Governance relates to the management of a project and particularly how this relates to conflict resolution. - -[h5]Community Governance[/h5] -The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: - -[ol] -[*] Lazy Consensus - -If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved. - - -[*] Veto - -Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. - - -[*] Community Vote - -A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums. At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules. -[/ol] - -Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is [b]strongly recommended[/b] that the proposer take steps to address any concerns that were raised and re-submit. - - - -[h4]Privacy Policy[/h4] - - -[h5]Summary[/h5] - - -Q: Who can see my content? - -A: By default ANYBODY on the internet, UNLESS you restrict it. $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators. - -Q: Can my content be censored? - -A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws. - - -[h5]Definitions[/h5] - -**$Projectname** - -Otherwise referred to as "the network", $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network. - -**hub** - -An individual computer or server connected to $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free. - -**hub administrator** - -The system operator of an individual hub. - -[h5]Policies[/h5] - -**Public Information** - -Any information or anything posted by you within $Projectname MAY be public or visible to anybody on the internet. To the extent possible, $Projectname allows you to protect content and restrict who can view it. - -Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items. - -You MAY additionally provide other profile information. Any information which you provide in your "default" or **public profile** MAY be transmitted to other hubs in $Projectname and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information. - -**Content** - -Content you provide (status posts, photos, files, etc.) belongs to you. $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability. - -Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content. - -**Comments and Forum posts** - -Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation. - -**Private Information** - -$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator. - -[h5]Identity Privacy[/h5] - -Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible. - -A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in $Projectname network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking. - -* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of $Projectname. This setting is probably enough for most people. - -*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case. - -* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set. - -[h5]Censorship[/h5] - -$Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends. - -$Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but $Projectname as a network cannot block it from being posted. - -$Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision. - -If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences. - [h3]Features[/h3] $Projectname is a general-purpose web publishing and communication network, with several unique features. It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators. @@ -379,94 +260,4 @@ Currently, the grid supports communications, photo albums, events, and files. Th This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user database on your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. -Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it. - - -[h3]Credits[/h3] - -Thanks to all who have helped and contributed to the project and its predecessors over the years. -It is possible we missed in your name but this is unintentional. We also thank the community and -its members for providing valuable input and without whom this entire effort would be meaningless. - -It is also worth acknowledging the contributions and solutions to problems which arose from -discussions amongst members and developers of other somewhat related and competing projects; -even if we have had our occasional disagreements. - -[list] -[li]Mike Macgirvin[/li] -[li]Fabio Comuni[/li] -[li]Simon L'nu[/li] -[li]marijus[/li] -[li]Tobias Diekershoff[/li] -[li]fabrixxm[/li] -[li]tommy tomson[/li] -[li]Simon[/li] -[li]zottel[/li] -[li]Christian Vogeley[/li] -[li]Jeroen van Riet Paap (jeroenpraat)[/li] -[li]Michael Vogel[/li] -[li]erik[/li] -[li]Zach Prezkuta[/li] -[li]Paolo T[/li] -[li]Michael Meer[/li] -[li]Michael[/li] -[li]Abinoam P. Marques Jr[/li] -[li]Tobias Hößl[/li] -[li]Alexander Kampmann[/li] -[li]Olaf Conradi[/li] -[li]Paolo Tacconi[/li] -[li]tobiasd[/li] -[li]Devlon Duthie[/li] -[li]Zvi ben Yaakov (a.k.a rdc)[/li] -[li]Alexandre Hannud Abdo[/li] -[li]Olivier Migeot[/li] -[li]Chris Case[/li] -[li]Klaus Weidenbach[/li] -[li]Michael Johnston[/li] -[li]olivierm[/li] -[li]Vasudev Kamath[/li] -[li]pixelroot[/li] -[li]Max Weller[/li] -[li]duthied[/li] -[li]Martin Schmitt[/li] -[li]Sebastian Egbers[/li] -[li]Erkan Yilmaz[/li] -[li]sasiflo[/li] -[li]Stefan Parviainen[/li] -[li]Haakon Meland Eriksen[/li] -[li]Oliver Hartmann (23n)[/li] -[li]Erik Lundin[/li] -[li]habeascodice[/li] -[li]sirius[/li] -[li]Charles[/li] -[li]Tony Baldwin[/li] -[li]Hauke Zuehl[/li] -[li]Keith Fernie[/li] -[li]Anne Walk[/li] -[li]toclimb[/li] -[li]Daniel Frank[/li] -[li]Matthew Exon[/li] -[li]Michal Supler[/li] -[li]Tobias Luther[/li] -[li]U-SOUND\mike[/li] -[li]mrjive[/li] -[li]nostupidzone[/li] -[li]tonnerkiller[/li] -[li]Antoine G[/li] -[li]Christian Drechsler[/li] -[li]Ludovic Grossard[/li] -[li]RedmatrixCanada[/li] -[li]Stanislav Lechev [0xAF][/li] -[li]aweiher[/li] -[li]bufalo1973[/li] -[li]dsp1986[/li] -[li]felixgilles[/li] -[li]ike[/li] -[li]maase2[/li] -[li]mycocham[/li] -[li]ndurchx[/li] -[li]pafcu[/li] -[li]Simó Albert i Beltran[/li] -[li]Manuel Reva[/li] -[li]Manuel Jiménez Friaza[/li] -[/list] \ No newline at end of file +Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it. \ No newline at end of file diff --git a/doc/about/hubzilla_project.bb b/doc/about/hubzilla_project.bb new file mode 100644 index 000000000..7a584687d --- /dev/null +++ b/doc/about/hubzilla_project.bb @@ -0,0 +1,185 @@ +[h3]$Projectname Governance[/h3] +Governance relates to the management of a project and particularly how this relates to conflict resolution. + +[h4]Community Governance[/h4] +The project is maintained and decisions made by the 'community'. The governance structure is still evolving. Until the structure is finalised, decisions are made in the following order: + +[ol] +[*] Lazy Consensus + +If a project proposal is made to one of the community governance forums and there are no serious objections in a "reasonable" amount of time from date of proposal (we usually provide 2-3 days for all interested parties to weigh in), no vote needs to be taken and the proposal will be considered approved. Some concerns may be raised at this time, but if these are addressed during discussion and work-arounds provided, it will still be considered approved. + + +[*] Veto + +Senior developers with a significant history of project commits may veto any decision. The decision may not proceed until the veto is removed or an alternative proposal is presented. + + +[*] Community Vote + +A decision which does not have a clear mandate or clear consensus, but is not vetoed, can be taken to a community vote. At present this is a simple popular vote in one of the applicable community forums. At this time, popular vote decides the outcome. This may change in the future if the community adopts a 'council' governance model. This document will be updated at that time with the updated governance rules. +[/ol] + +Community Voting does not always provide a pleasant outcome and can generate polarised factions in the community (hence the reason why other models are under consideration). If the proposal is 'down voted' there are still several things which can be done and the proposal re-submitted with slightly different parameters (convert to an addon, convert to an optional feature which is disabled by default, etc.). If interest in the feature is high and the vote is "close", it can generate lots of bad feelings amongst the losing voters. On such close votes, it is [b]strongly recommended[/b] that the proposer take steps to address any concerns that were raised and re-submit. + + + +[h4]Privacy Policy[/h4] + +Q: Who can see my content? + +A: By default ANYBODY on the internet, UNLESS you restrict it. $Projectname allows you to choose the privacy level you desire. Restricted content will NOT be visible to "spy networks" and advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within $Projectname which are even resistant to eavesdropping by skilled and determined hub administrators. + +Q: Can my content be censored? + +A: $Projectname (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws. + + +[h5]Definitions[/h5] + +**$Projectname** + +Otherwise referred to as "the network", $Projectname is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network. + +**hub** + +An individual computer or server connected to $Projectname. These are provided by a **hub administrator** and may be public or private, paid or free. + +**hub administrator** + +The system operator of an individual hub. + +[h5]Policies[/h5] + +**Public Information** + +Any information or anything posted by you within $Projectname MAY be public or visible to anybody on the internet. To the extent possible, $Projectname allows you to protect content and restrict who can view it. + +Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items. + +You MAY additionally provide other profile information. Any information which you provide in your "default" or **public profile** MAY be transmitted to other hubs in $Projectname and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information. + +**Content** + +Content you provide (status posts, photos, files, etc.) belongs to you. $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability. + +Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content. + +**Comments and Forum posts** + +Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation. + +**Private Information** + +$Projectname developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private channel content CAN be seen in the database of every involved hub administrator, but private messages are obscured in the database. The latter means that it is very difficult, but NOT impossible for this content to be seen by a hub administrator. Private channel content and private messages are also stripped from email notifications. End to end encryption is provided as an optional feature and this CANNOT be seen, even by a determined administrator. + +[h5]Identity Privacy[/h5] + +Privacy for your identity is another aspect. Because you have a decentralized identity in $Projectname, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible. + +A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in $Projectname network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking. + +* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of $Projectname. This setting is probably enough for most people. + +*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case. + +* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set. + +[h5]Censorship[/h5] + +$Projectname is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends. + +$Projectname as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but $Projectname as a network cannot block it from being posted. + +$Projectname RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a $Projectname decision. + +If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences. + +[h3]Credits[/h3] + +Thanks to all who have helped and contributed to the project and its predecessors over the years. +It is possible we missed in your name but this is unintentional. We also thank the community and +its members for providing valuable input and without whom this entire effort would be meaningless. + +It is also worth acknowledging the contributions and solutions to problems which arose from +discussions amongst members and developers of other somewhat related and competing projects; +even if we have had our occasional disagreements. + +[list] +[li]Mike Macgirvin[/li] +[li]Fabio Comuni[/li] +[li]Simon L'nu[/li] +[li]marijus[/li] +[li]Tobias Diekershoff[/li] +[li]fabrixxm[/li] +[li]tommy tomson[/li] +[li]Simon[/li] +[li]zottel[/li] +[li]Christian Vogeley[/li] +[li]Jeroen van Riet Paap (jeroenpraat)[/li] +[li]Michael Vogel[/li] +[li]erik[/li] +[li]Zach Prezkuta[/li] +[li]Paolo T[/li] +[li]Michael Meer[/li] +[li]Michael[/li] +[li]Abinoam P. Marques Jr[/li] +[li]Tobias Hößl[/li] +[li]Alexander Kampmann[/li] +[li]Olaf Conradi[/li] +[li]Paolo Tacconi[/li] +[li]tobiasd[/li] +[li]Devlon Duthie[/li] +[li]Zvi ben Yaakov (a.k.a rdc)[/li] +[li]Alexandre Hannud Abdo[/li] +[li]Olivier Migeot[/li] +[li]Chris Case[/li] +[li]Klaus Weidenbach[/li] +[li]Michael Johnston[/li] +[li]olivierm[/li] +[li]Vasudev Kamath[/li] +[li]pixelroot[/li] +[li]Max Weller[/li] +[li]duthied[/li] +[li]Martin Schmitt[/li] +[li]Sebastian Egbers[/li] +[li]Erkan Yilmaz[/li] +[li]sasiflo[/li] +[li]Stefan Parviainen[/li] +[li]Haakon Meland Eriksen[/li] +[li]Oliver Hartmann (23n)[/li] +[li]Erik Lundin[/li] +[li]habeascodice[/li] +[li]sirius[/li] +[li]Charles[/li] +[li]Tony Baldwin[/li] +[li]Hauke Zuehl[/li] +[li]Keith Fernie[/li] +[li]Anne Walk[/li] +[li]toclimb[/li] +[li]Daniel Frank[/li] +[li]Matthew Exon[/li] +[li]Michal Supler[/li] +[li]Tobias Luther[/li] +[li]U-SOUND\mike[/li] +[li]mrjive[/li] +[li]nostupidzone[/li] +[li]tonnerkiller[/li] +[li]Antoine G[/li] +[li]Christian Drechsler[/li] +[li]Ludovic Grossard[/li] +[li]RedmatrixCanada[/li] +[li]Stanislav Lechev [0xAF][/li] +[li]aweiher[/li] +[li]bufalo1973[/li] +[li]dsp1986[/li] +[li]felixgilles[/li] +[li]ike[/li] +[li]maase2[/li] +[li]mycocham[/li] +[li]ndurchx[/li] +[li]pafcu[/li] +[li]Simó Albert i Beltran[/li] +[li]Manuel Reva[/li] +[li]Manuel Jiménez Friaza[/li] +[/list] \ No newline at end of file diff --git a/doc/toc.html b/doc/toc.html index 597a2c2c5..2a65cb636 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -32,7 +32,8 @@
              -- cgit v1.2.3 From c87d025902faabbd900c7a12089b43a7b9318be1 Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Wed, 21 Dec 2016 16:28:45 -0500 Subject: Forgot to complete the thought --- doc/about/about_hubzilla.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 6acbabd8e..6a2c4405e 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -10,7 +10,7 @@ From the practical perspective of hub members who use the software, $Projectname [li]webpage hosting with a content management system[/li] [li]wiki[/li] [li]and more...[/li][/ul] -While all of these apps and services can be found in other software packages, only $Projectname allows you to set permissions for groups and individuals who may not even have accounts on your hub! Currently, if you want to share things privately on the internet, the people you share with must have accounts on the server hosting your data; otherwise, there is no robust way for your server to [i]authenticate[/i] visitors to the site to know whether to grant them access. +While all of these apps and services can be found in other software packages, only $Projectname allows you to set permissions for groups and individuals who may not even have accounts on your hub! In typical web apps, if you want to share things privately on the internet, the people you share with must have accounts on the server hosting your data; otherwise, there is no robust way for your server to [i]authenticate[/i] visitors to the site to know whether to grant them access. $Projectname solves this problem with an advanced system of [i]remote authentication[/i] that validates the identity of visitors by employing techniques that include public key cryptography. [h3]Software Stack[/h3] The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools. -- cgit v1.2.3 From 4bcc1f5adbe604917c1005028808c29bf48dea69 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Thu, 22 Dec 2016 15:20:02 +0100 Subject: move style info into css file --- doc/about/about_hubzilla.bb | 3 +-- doc/toc.html | 32 -------------------------------- 2 files changed, 1 insertion(+), 34 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 1117fd25a..38b99f83d 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -1,4 +1,3 @@ - [h3]Project Overview[/h3] $Projectname is a decentralized community server providing communications, identity, and access control services which work together seamlessly across domains and connected websites. It allows anybody to publicly or [b]privately[/b] publish a range of web/media/personal content. The cross-domain privacy implementation is unique and somewhat revolutionary, as identity and access rights are negotiated by servers invisibly in the background. @@ -469,4 +468,4 @@ even if we have had our occasional disagreements. [li]Simó Albert i Beltran[/li] [li]Manuel Reva[/li] [li]Manuel Jiménez Friaza[/li] -[/list] \ No newline at end of file +[/list] diff --git a/doc/toc.html b/doc/toc.html index 6090c4ace..b8816ed91 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -1,35 +1,3 @@ - -
              -- cgit v1.2.3 From 7a9fab8f57901cdb53a6dadf36370ce13beb05cd Mon Sep 17 00:00:00 2001 From: Andrew Manning Date: Thu, 22 Dec 2016 21:40:59 -0500 Subject: Continuing to revise and rearrange content for clarity and reduced redundancy. --- doc/about/about_hubzilla.bb | 85 +++++++++++---------------------------------- doc/developer/api_zot.md | 40 +++++++++++++++++++++ doc/toc.html | 2 +- 3 files changed, 61 insertions(+), 66 deletions(-) (limited to 'doc') diff --git a/doc/about/about_hubzilla.bb b/doc/about/about_hubzilla.bb index 6a2c4405e..f249df66f 100644 --- a/doc/about/about_hubzilla.bb +++ b/doc/about/about_hubzilla.bb @@ -1,5 +1,5 @@ [h3]What is Hubzilla?[/h3] -$Projectname is a [b]free and open source[/b] set of web applications and services running on a special kind of web server, called a "hub", that can connect to other hubs in a decentralized network we like to call "the grid", providing sophisticated communications, identity, and access control services which work together seamlessly across domains and independent websites. It allows anybody to publicly or [b]privately[/b] publish content via "channels", which are the fundamental, cryptographically secured identities that provide authentication independently of the hubs which host them. This revolutionary liberation of online identity from individual servers and domains is called "nomadic identity", and it is powered by the Zot protocol, a new framework for decentralized access control with fine-grained, extensible permissions. +$Projectname is a [b]free and open source[/b] set of web applications and services running on a special kind of web server, called a "hub", that can connect to other hubs in a decentralised network we like to call "the grid", providing sophisticated communications, identity, and access control services which work together seamlessly across domains and independent websites. It allows anybody to publicly or [b]privately[/b] publish content via "channels", which are the fundamental, cryptographically secured identities that provide authentication independently of the hubs which host them. This revolutionary liberation of online identity from individual servers and domains is called "nomadic identity", and it is powered by the Zot protocol, a new framework for decentralised access control with fine-grained, extensible permissions. [h3]Right... so what is Hubzilla?[/h3] From the practical perspective of hub members who use the software, $Projectname offers a variety of familiar, integrated web apps and services, including: @@ -13,20 +13,30 @@ From the practical perspective of hub members who use the software, $Projectname While all of these apps and services can be found in other software packages, only $Projectname allows you to set permissions for groups and individuals who may not even have accounts on your hub! In typical web apps, if you want to share things privately on the internet, the people you share with must have accounts on the server hosting your data; otherwise, there is no robust way for your server to [i]authenticate[/i] visitors to the site to know whether to grant them access. $Projectname solves this problem with an advanced system of [i]remote authentication[/i] that validates the identity of visitors by employing techniques that include public key cryptography. [h3]Software Stack[/h3] -The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools. +The $Projectname software stack is a relatively standard webserver application written primarily in PHP/MySQL and [url=https://github.com/redmatrix/hubzilla/blob/master/install/INSTALL.txt]requiring little more than a web server, a MySQL-compatible database, and the PHP scripting language[/url]. It is designed to be easily installable by those with basic website administration skills on typical shared hosting platforms with a broad range of computing hardware. It is also easily extended via plugins and themes and other third-party tools. [h3]Additional Resources and Links[/h3] -[list] -[*][url=http://hubzilla.org]Hubzilla project website[/url] +[list][*][url=http://hubzilla.org]Hubzilla project website[/url] [*][url=https://github.com/redmatrix/hubzilla]Hubzilla core code repository[/url] -[*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url] -[/list] +[*][url=https://github.com/redmatrix/hubzilla-addons]Hubzilla official addons repository[/url][/list] -[h3]Features[/h3] +[h3]Glossary[/h3] +[dl terms="b"] +[*= hub] An instance of the Hubzilla software running on a standard web server + +[*= grid] The global network of hubs that exchange information with each other using the Zot protocol. + +[*= channel] The fundamental identity on the grid. A channel can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions. -$Projectname is a general-purpose web publishing and communication network, with several unique features. It is designed to be used by the widest range of people on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators. +[*= clone] Channels can have clones associated with separate and otherwise unrelated accounts on independent hubs. Communications shared with a channel are synchronized among the channel clones, allowing a channel to send and receive messages and access shared content from multiple hubs. This provides resilience against network and hardware failures, which can be a significant problem for self-hosted or limited-resource web servers. Cloning allows you to completely move a channel from one hub to another, taking your data and connections with you. See nomadic identity. -This page lists some of the core features of $Projectname that are bundled with the official release. As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of the members. +[*= nomadic identity] The ability to authenticate and easily migrate an identity across independent hubs and web domains. Nomadic identity provides true ownership of an online identity, because the identities of the channels controlled by an account on a hub are not tied to the hub itself. A hub is more like a "host" for channels. With Hubzilla, you don't have an "account" on a server like you do on typical websites; you own an identity that you can take with you across the grid by using clones. + +[*= [url=[baseurl]/help/developer/what_is_zot]Zot[/url]] The novel JSON-based protocol for implementing secure decentralised communications and services. It differs from many other communication protocols by building communications on top of a decentralised identity and authentication framework. The authentication component is similar to OpenID conceptually but is insulated from DNS-based identities. Where possible remote authentication is silent and invisible. This provides a mechanism for internet-scale distributed access control which is unobtrusive. +[/dl] + +[h3]Features[/h3] +This page lists some of the core features of $Projectname that are bundled with the official release. $Projectname is a highly extensible platform, so more features and capabilities can be added via additional themes and plugins. [h4]Affinity Slider[/h4] @@ -173,9 +183,7 @@ Any number of profiles may be created containing different information and these [h4]Account Backup[/h4] -Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s). - -Backups can then be used to clone or restore a profile. +$Projectname offers a simple, one-click account backup, where you can download a complete backup of your profile(s). Backups can then be used to clone or restore a profile. [h4]Account Deletion[/h4] @@ -201,7 +209,6 @@ Post can be previewed prior to sending and edited after sending. [h4]Voting/Consensus[/h4] Posts can be turned into "consensus" items which allows readers to offer feedback, which is collated into "agree", "disagree", and "abstain" counters. This lets you gauge interest for ideas and create informal surveys. - [h4]Extending $Projectname[/h4] $Projectname can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins. @@ -209,55 +216,3 @@ $Projectname can be extended in a number of ways, through site customisation, pe [h4]API[/h4] An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to $Projectname. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided. - - - - -[h3]What is Zot?[/h3] - -Zot is the protocol that powers $Projectname, providing three core capabilities: Communications, Identity, and Access Control. - -The functionality it provides can also be described as follows: - - - a relationship online is just a bunch of permissions - - the internet is just another folder - -[h4]Communications[/h4] - -Zot is a revolutionary protocol which provides [i]decentralised communications[/i] and [i]identity management[/i] across the grid. The resulting platform can provide web services comparable to those offered by large corporate providers, but without the large corporate provider and their associated privacy issues, insatiable profit drive, and walled-garden mentality. - -Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers. - -Zot allows a wide array of background services in the grid, from offering friend suggestions, to directory services. You can also perform other things which would typically only be possibly on a centralized provider - such as "Wall to Wall" posts. Private/multiple profiles can be easily created, and web content can be tailored to the viewer via the [i]Affinity Slider[/i]. - -You won't find these features at all on other decentralized communication services. In addition to providing hub (server) decentralization, perhaps the most innovative and interesting Zot feature is its provision of [i]decentralized identity[/i] services. - -[h4]Identity[/h4] - -Zot's identity layer is unique. It provides [i]invisible single sign-on[/i] across all sites in the grid. - -It also provides [i]nomadic identity[/i], so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently. - -The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact. - -Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship. - -Nomadic identity, single sign-on, and $Projectname's decentralization of hubs, we believe, introduce a high degree of degree of [i]resiliency[/i] and [i]persistence[/i] in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship. - -As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit. - -How does Zot do that? We call it [i]magic-auth[/i], because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and login names for every different sight that someone might visit online. - -You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control. - -You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it. - -[h4]Access Control[/h4] - -Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create. - -Currently, the grid supports communications, photo albums, events, and files. This will be extended in the future to provide content management services (web pages) and cloud storage facilities, such as WebDAV and multi-media libraries. Every object and how it is shared and with whom is completely under your control. - -This type of control is available on large corporate providers such as Facebook and Google, because they own the user database. Within the grid, there is no need for a huge user database on your machine - because the grid [i]is[/i] your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. - -Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. Your private photos cannot be viewed, because permission really work; they are not an addon that was added as an afterthought. If you aren't on the list of allowed viewers for a particular photo, you aren't going to look at it. \ No newline at end of file diff --git a/doc/developer/api_zot.md b/doc/developer/api_zot.md index d46cc8860..d75012818 100644 --- a/doc/developer/api_zot.md +++ b/doc/developer/api_zot.md @@ -1,3 +1,43 @@ +### What is Zot? + +Zot is the revolutionary protocol that powers $Projectname, providing **communications**, **identity management**, and **access control** across a fully **decentralised** network of independent websites, often called "the grid". The resulting platform is a robust system that supports privacy and security while enabling the kind of rich web services typically seen only in centralized, proprietary solutions. + +#### Communications + +Communications and social networking are an integral part of the grid. Any channel (and any services provided by that channel) can make full use of feature-rich social communications on a global scale. These communications may be public or private - and private communications comprise not only fully encrypted transport, but also encrypted storage to help protect against accidental snooping and disclosure by rogue system administrators and internet service providers. + +Zot supports a wide array of background services in the grid, from friend suggestions to directory services. New content and data updates are propagated in the background between hubs across the grid according to access control lists and permissions specified by both sender *and* receiver channels. Data is also synchronized between an arbitrary number of channel clones, allowing hub members to access data and continue collaborating seamlessly in the event that their primary hub is inaccessible or offline. + +#### Identity + +Zot's identity layer is unique. It provides **invisible single sign-on** across all sites in the grid. + +It also provides **nomadic identity**, so that your communications with friends, family, and or anyone else you're communicating with won't be affected by the loss of your primary communication node - either temporarily or permanently. + +The important bits of your identity and relationships can be backed up to a thumb drive, or your laptop, and may appear at any node in the grid at any time - with all your friends and preferences intact. + +Crucially, these nomadic instances are kept in sync so any instance can take over if another one is compromised or damaged. This protects you against not only major system failure, but also temporary site overloads and governmental manipulation or censorship. + +Nomadic identity, single sign-on, and $Projectname's decentralisation of hubs, we believe, introduce a high degree of degree of **resiliency** and **persistence** in internet communications, that are sorely needed amidst global trends towards corporate centralization, as well as mass and indiscriminate government surveillance and censorship. + +As you browse the grid, viewing channels and their unique content, you are seamlessly authenticated as you go, even across completely different server hubs. No passwords to enter. Nothing to type. You're just greeted by name on every new site you visit. + +How does Zot do that? We call it **magic-auth**, because $Projectname hides the details of the complexities that go into single sign-on logins, and nomadic identities, from the experience of browsing on the grid. This is one of the design goals of $Projectname: to increase privacy, and freedom on the web, while reducing the complexity and tedium brought by the need to enter new passwords and login names for every different sight that someone might visit online. + +You login only once on your home hub (or any nomadic backup hub you have chosen). This allows you to access any authenticated services provided anywhere in the grid - such as shopping, blogs, forums, and access to private information. This is just like the services offered by large corporate providers with huge user databases; however you can be a member of this community, as well as a server on this network using a $35 Rasberry Pi. Your password isn't stored on a thousand different sites, or even worse, only on a few sites like Google and Facebook, beyond your direct control. + +You cannot be silenced. You cannot be removed from the grid, unless you yourself choose to exit it. + +#### Access Control + +Zot's identity layer allows you to provide fine-grained permissions to any content you wish to publish - and these permissions extend across $Projectname. This is like having one super huge website made up of an army of small individual websites - and where each channel in the grid can completely control their privacy and sharing preferences for any web resources they create. + +Currently, $Projectname supports access control for many types of data, including post/comment discussion threads, photo albums, events, cloud files, web pages, wikis, and more. Every object and how it is shared and with whom is completely under your control. + +This type of control is trivial on large corporate providers because they own the user database. Within the grid, there is no need for a huge user database on your machine - because the grid **is** your user database. It has what is essentially infinite capacity (limited by the total number of hubs online across the internet), and is spread amongst hundreds, and potentially millions of computers. + +Access can be granted or denied for any resource, to any channel, or any group of channels; anywhere within the grid. Others can access your content if you permit them to do so, and they do not even need to have an account on your hub. + ### Zot API The API endpoints detailed below are relative to `api/z/1.0`, meaning that if an diff --git a/doc/toc.html b/doc/toc.html index 55cda4f7a..19223abda 100644 --- a/doc/toc.html +++ b/doc/toc.html @@ -80,7 +80,7 @@
              -- cgit v1.2.3