cover photo

Hubzilla Development

  last edited: Wed, 17 Oct 2018 15:03:05 -0400  
I have created an addon to ease the transition to 3.8 a little. See here:

There are two pending merge request to make this work:

Obviously those should be merged to the 3.8RC branch...

!!Hubzilla Development
I got started testing & merging earlier today but had something come up. I will take a look later this evening and get it merged in.
Sorry, spent several hours tracking down a queue problem on my Osada instance. Now I have a pounding headache and it's almost midnight, so unless someone else picks it up and takes a peek, it'll have to wait until tomorrow. Sorry....

(I took a quick look, but didn't get a chance to actually test it - I like the concept and the structure! Nice work!)

  last edited: Mon, 15 Oct 2018 18:36:48 -0400  
!Hubzilla Development

See this demo instance
. It would be handy to sync Events between Hubzilla and Get Together. Also, to authenticate to Get Together from Hubzilla. This is currently being discussed on Github as noted in the wiki entry below. Dev chat is taking place on Gitter here.

[ sunjam ] ActivityPub Integration Possibilities - Home
Shouldn't have to do much of anything for basic integration. Hubzilla events are ActivityPub compatible iirc and iCal import/export is provided. Note that events over ActivityPub hasn't really been tested because there were no existing compatible implementations when I did this over a year ago. The Osada project has a few significant improvements in ActivityPub event handling, so if you *do* see any issues, you can look there for fixes. Hubzilla also supports OAuth2. Recurring events in iCal feeds may be an issue, because these aren't supported in the Hubzilla calendar. Work was begun on this several years ago, but it really needs somebody to grab the torch and start running.
!Hubzilla Development
Is it possible to hide some selected dropdown-items from public view (logged off view)?
Not at the moment. It would be a rather simple addon to accomplish this though...

I spent some time tinkering with the gitlab ci and eventually got some positive results :smile_cat:

It's still far away from what @Klaus had implemented at Hubzilla's former github repository via travis, but it's a start...

Since i am trying to get into the habit of letting my contributions to Hubzilla review by a fellow contributor, here is my MR:

!!Hubzilla Development
Personally, I dont know enough about the ci system and so can't validate it at all. I say if it works, go for it! We can always tweak it later.


being new to Hubzilla as a user and admin. I am missing a support channel for users and a support channel for admins. Are there no official channels for these groups?

This channel, as far as I understand, seems only dedicated to developers.

You want to connect to though that hub appears to be down at the time of writing.
@Hubzilla Support Forum
Oh, okay. Yes, I tried to connect.
So I will wait.
Thanks ;-)
It's back now.

!Hubzilla Support Forum !Hubzilla Development

For the last day or two I've experienced unexpected logouts from my 3.8RC instance. Most notably if I remotely log into another hub, I need to log into my home hub again afterward. This occurs even if I select "Remember Me" on the login screen. Not sure where to start looking for what may have changed - so any hints would be helpful. It started "recently" - but I'm not sure how recently.
@M. Dent my install is 3.8RC - 1221 and it work fine for me.  Just clicked over to your profile and then Take Me Home... I'm still logged in.

Hmm... maybe should try in a different browser?  I was using Chrome.
I'm on 1224 using Brave currently. I'll check browsers - though I've been using Brave fine for quite a while.
I wonder, is it possible that session timeouts had not been reliably enforced and now they are? I don't know. Just grasping at straws. It isn't 100% reproducible which makes it really hard to track down and very frustrating.. I guess just consider this a data-point in case there are other reports in the future.

  last edited: Thu, 11 Oct 2018 13:15:46 -0400  
!Hubzilla Advocacy

As things progress for the release of Hubzilla 3.8, I'd like to gather together ideas and hopefully people to work together on publicity to surround the release. Over the next few days, I intend to present a question or two each day that will help gather material and refine some strategies and content for the effort. JOIN IN! HELP OUT!

To start with, let's think about how Hubzilla is ALREADY in use and what it's used for. Share your Hubzilla story below. What do you use Hubzilla for? How does it help you day to day? What projects are you planning to implement using Hubzilla? Why are you drawn to Hubzilla? What has Hubzilla replaced in your tool chain?

It doesn't have to be a technical, "how-to" (though, that may be a fun project too!). Just a paragraph or two that tells others how YOU use Hubzilla and what benefits you derive from Hubzilla.

And if you are still developing your project - why are you developing using Hubzilla? What does Hubzilla bring to the table that other platforms and systems do not?

!Hubzilla Development !Hubzilla Support Forum
Good thought! Thanks! I've added Dev and Support to the distributions.

!Hubzilla Development
"Action 1: We are shutting down Google+ for consumers.
Finding 2: People want fine-grained controls over the data they share with apps. "

!Hubzilla Development

I've submitted a merge request that implements a new Wiki escaping mechanism that deals with some of the edge cases that give troubles currently (eg. the & character). The new system also allows all UTF8 characters in WIKI names and WIKI page names.

It should be a "drop-in" replacement and should function fine in place of the current system, but it would be good if some testing could take place before it is integrated. SO... I'm asking for the help of anyone who might be able to run it through some testing.

The merge request is on framagit for review:
@Mario Vavti -- Smarty actually has some built in escaping. It might be good to get into the habit of using the $varname|escape:'quotes' (for display) and $varname|escape:'url' (for URL related stuff) as appropriate when using variables in Javascript calls in templates. I pushed a fix for deleting pages with quotation marks to dev.
Yeah we use that at some places already... Thanks for fuxing this...
Nicely done. Thanks for fixing the fix! I missed the 'javascript' option.

!Hubzilla Development

Is there any api in zot which we can use to achieve following things?

1. Change cover and profile images ?
2 Delete posts from news feed and channel ?

Thank you in advance


 Königsberg, Russia,  
!Hubzilla Development @M. Dent

Just got new update of queue module Zotlabs/Daemon/Master.php in dev and seems now cloned channel syncronization stopped.
Records in message delivery report:

Marzanna <>     comment route mismatch     2018-10-07 20:12:09
Marzanna <>     comment route mismatch     2018-10-07 20:14:57
Marzanna <>     comment route mismatch     2018-10-07 20:35:22
Max Kostikov <>     comment route mismatch     2018-10-07 20:11:44
Max Kostikov <>     comment route mismatch     2018-10-07 20:14:32
Max Kostikov <>     comment route mismatch     2018-10-07 20:34:58
Max Kostikov <>     comment route mismatch     2018-10-07 20:11:42
Max Kostikov <>     comment route mismatch     2018-10-07 20:14:30
Max Kostikov <>     comment route mismatch     2018-10-07 20:34:55
Both. We *should* prohibit normal delivery and only accept the sync packet but we did this once and comments broke. It's a tricky situation to detect without having unintended consequences.
  last edited: Mon, 08 Oct 2018 07:11:09 -0400  
I still have this issue with edited comments sync between clonned channels.
Seems I found some logic here.
If I edit a post which was created on hub where current channel located it doesn't synchronized in other place but if I edit it from other place edit will be synced.
In my case I have two cloned channels kostikov@ at and hubs.
If post was created at and I will edit it from edit doesn't synced to If I edit same post from edit will be synced to

UPD. I did few tests and this issue appears only for certain posts from alien channels on same hub.
  last edited: Mon, 08 Oct 2018 12:42:45 -0400  
Hmm, funny but this looks like not just sync but displaying issue too.
I can not see edited comment in /network but can see in /pubstream



  last edited: Mon, 08 Oct 2018 07:20:56 -0400  
The context help given for the account settings and channel settings pages seems to be quite outdated. So are some of the others, but let's start here :) Click on the little question mark icon at the top og the page, and check what it says.

To try to clean up this a bit, I need some input to see if my understanding is correct:
  • An account is tied to the specific Hubzilla instance, right?
  • You can have any number (potentially limited by the hubmin) of channels all controlled by the same account.
  • To clone or move a channel to another hub you need to create an account on the target hub first? You can not clone accounts, right?
  • There's no distinction between channel and profile in Hubzilla?
The reason I'm asking is that I'm trying to translate the context help to Norwegian (bokmål – nb,) and don't quite recognize the described behaviour with how I've understood it. I'd be happy to help update the english text too, as I get my understanding confirmed or corrected.


!!Hubzilla Development !!Hubzilla Support Forum
Go to edit profile then in settings enable advanced profiles
Alright, I found it! Had to enable Settings::Additional Features::Multiple Profiles, The Advanced Profile setting just gave me more fields for various information. Thanks for helping me figure this one out!

With that out of the way, the rest seems reasonable?
I'm aware... will look into it.

!Hubzilla Development Mabuhay and Good morning from the Philippines!

Feedback / things I noticed for 3.8RC.

  • If BugLink addon was enabled via Admin > Addon section, after an upgrade, you have to disable > enable > disable to actually disable it. Could be on my end only. (I used safemode on > git checkout the main and addons > safemode off during the upgrade process.)
  • For devs/maintainers of non-default themes with exposed / hard-coded menus in the navbar, it will have to be updated for 3.8RC. What I was able to test: Beetroot and Blueskies.
  • Pleroma user following a Hubzilla channel now working
  • Superblock addon has this random user that can not be deleted (same in 3.6.1). Different user per hub (cloned channel). I haven't tested using a different account in another hub (not cloned)
  • Settings > Channel Settings > Misc Settings is empty if addons/apps that uses this subheader are not enabled, might be mistaken as a bug
  • There are a few (trivial) settings here and there that doesn't carry over after an upgrade (which is probably expected?) What I can remember:
    • New Member Links
    • Channel > Comment Blog/List setting
    • Custom Theme Settings > Advanced is switched off
    • Show visual notifications > Upcoming birthdays was switched back on

-- Off to a seminar …
Superblock addon has this random user that can not be deleted

Check your DB for a bogus entry:

select * from xchan where xchan_hash = ''

If it returns something delete it.
I was only able to check on this this afternoon… I did an update first to 3.8RC1.1 - 1224 and when I checked the Superblock addon, it's empty now.

In any case,  I checked the db, there was a bogus entry and deleted it.


  last edited: Fri, 05 Oct 2018 14:01:29 -0400  
!Hubzilla Development

Maybe someone smarter than me can help figure this out.

When an addon is added to Hubzilla (i.e., enabled by the hub admin), it runs the install functions, then the load functions. Typically, the load functions contain hook registrations.

However, the hook registrations, Hook::register(), only add the hook to the database. It does not add the hook to the internal App::$hook[] array for that "run-through". The problem is, if the "loading" relies upon some of those hooks as part of it's continued operation they won't get triggered during loading. (I didn't look, but from memory, I think the same problem exists during "unloading" and hook removal).

One thought was to simply run a Hook::insert() as part of the Hook::register() function. If you look at the commit log for dev, you'll see I did that, but almost immediately reverted it when I realized that because of the way that addons are unloaded and reloaded periodically, there is a possibility to have a hook read from the database and then duplicated via hook::insert() during the addon_load() procedure with little to no way to predict that it would be duplicated.

Also, in looking at this, I noted that "inserted" hooks are not prioritized when they are called but are merely appended to the list for the particular hook. This could introduce a number of unpredictable/unexpected problems for addon devs.

I'm not yet confident with my knowledge of the codebase to be sure that I catch all the places it may impact to do an overhaul of the hook functions. But my thought would be to change from using App::$hooks[$name][] = array($file, $fn, $priority, $version); to using something like App::$hooks[$name][$priority][$fn] = array ($file,$fn,$priority,$version);. This would automatically prioritize inserted hooks and automatically eliminate the possibility of (unintended) duplication. One problem I see is that it would also invert the current prioritization of hooks - as currently, hooks with a higher number as "priority" get run first.

Needless to say, there are a lot of pitfalls here - thus the reason I'm looking for people smarter than me.

@Mike Macgirvin @Mario Vavti @Andrew Manning
A workaround for app developers in the meantime in order to avoid the problem of hooks not existing but trying to use them is to make sure to call load_hooks(); after all of the hook registrations. That will reload all the hooks from the database. Beware, however, that any "inserted" hooks (Hook::insert();) will be removed.

If you installed Hubzilla via git and running master branch, you are only a git checkout 3.8RC away from the next major Hubzilla release. Make sure to also git checkout 3.8RC the addons if you decide to join the RC testing.

IMPORTANT: due to major changes to the addons, apps and settings in this release you should run util/safemode on before, and util/safemode off after the upgrade.

You are welcome to provide feedback in form of bugreports or pull requests on issues you might find.

You can follow the progress of RC testing in this wiki. Please PM me for wiki write-access if desired.

For the changelog please have a look at the git history for now.
A condensed summary will follow with the version 3.8 release announcement.

Happy testing!

!Hubzilla Announcements !Hubzilla Development
It is actually 3.8RC2.1 now :heavy_check_mark:
Upgrade and install tests have passed for mysql and postgresql :heavy_check_mark:

!Hubzilla Development

I've added a plugin to the addons in the dev branch that implements SCEditor for Hubzilla with the main BBCode markup that most people use. The addon requires the most recent dev branch of core as it makes use of some newer hooks.

* Bold
* Italic
* Underline
* Strikethrough
* Super/Sub-script
* Quote
* Code
* Horizontal Rule
* Copy / Cut / Paste
* Font color
* bullet & ordered lists
* "Full screen" mode
* and the "Raw edit" button.

Image insert, web links, and attachments - basically anything that isn't an "editor"/"formatting" option is handled by the Hubzilla derived buttons at the bottom of the edit window (polls, comments, expiration, publish, location, etc.).

You can still put BBCode straight into the editing window for things that aren't handled by the editor (or even things that are). They just will appear in raw BBCode and won't be WYSIWYG'd..

Anyone who wants to add more features can look at the SCEditor website. It's a pretty extensible editor, though take care to look over the Hubzilla side of things in include/bbcode.php and include/html2bbcode.php if you add functionality otherwise things won't get rendered on regular pages. This is one reason that certain features (floated div's and font sizes for example) haven't been implemented at this point. But what is there will handle the great majority of people's needs/desires.
I should add - the WYSIWYG editor is only used on the /network, /rpost, and /editpost pages. It is not currently available for the WIKI, Webpages, or Articles at this point in time.
  last edited: Fri, 05 Oct 2018 04:24:18 -0400  
Just a quick note: Enabled it, not much chance to use it, in a rush. But the message has a bug.

Plugin hsse enabled

Edit: I see that's the name, I thought it was a mis-spell of "has been".
Yeah, I originally called it the Hubzilla Simplified Status Editor. Unfortunately, that was too long and messed up formatting on the apps page. Rather than try to fix the page, I shortened the name.

I've been trying, and mostly failing, to get a Hubzilla instance (or Zap) running under Docker using a docker-compose file. I believe I have identified two problems that must be fixed: one in the mariadb container and one in the Hubzilla/Zap container.
Here's the docker-compose.yml:

version: '3'
      MYSQL_ROOT_PASSWORD: "password"
      MYSQL_DATABASE: "zap"
      MYSQL_USER: "zap"
      MYSQL_PASSWORD: "zap"
    image: mariadb
    restart: always
      - db:/var/lib/mysql
      - "3307:3306"
      context: .
      dockerfile: Dockerfile
        DOMAIN: "my.hub.domain"
    image: zap
    restart: always
      - zap:/var/www/html
      - "8080:80"
      - "8443:443"
      - db
      - db

This defines a linked pair of containers such that the app container can connect to the database container via the hostname "db". The Hubzilla/Zap hub setup asks for the database address, but if it is not "localhost" or "" it will try to find it via DNS and this will fail for the "db" value (see /include/dba/dba_driver.php). Secondly, in the mariadb container, you have to set in /etc/mysql/my.cnf:

in order for it to work.
Does anyone else have experience with this stuff? Somehow the Nextcloud and Wordpress docker-compose files allow them to start up with no problems like this, and I can't figure out what's different.

For reference, here's the current Dockerfile, where the src folder is just a local Hubzilla/Zap git repo clone:
FROM debian
ENV DEBIAN_FRONTEND noninteractive


RUN apt-get update && apt-get install -y apache2 openssl php php-cli php-mysql php-curl php-fpm php-gd php-json php-xml php-zip php-mbstring git vim software-properties-common
# Remove APT files
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Generate self-signed SSL certificate
RUN openssl req -x509 -nodes \
-subj "/C=US/ST=Oregon/L=Portland/O=organization/OU=Org/CN=$DOMAIN" \
-newkey rsa:4096 \
-keyout /etc/ssl/private/$DOMAIN.key \
-out /etc/ssl/certs/$DOMAIN.crt \
-days 365

# Install the hub apache config file
ADD container_apache.conf /etc/apache2/sites-available/$DOMAIN.conf
RUN sed -i "s/{{DOMAIN}}/$DOMAIN/g" /etc/apache2/sites-available/$DOMAIN.conf
RUN a2dissite 000-default default-ssl
RUN a2ensite $DOMAIN.conf
RUN a2enmod ssl rewrite

# Construct the hub web root from the official Zap git repository
RUN rm /var/www/html/index.html
COPY src/ /var/www/html/
RUN   cd /var/www/html/ && \
mkdir -p "store/[data]/smarty3" && \
chown -R www-data:www-data /var/www/html

# Configure the zap cron job
RUN echo "*/15 * * * * cd /var/www/html; /usr/bin/php Zotlabs/Daemon/Master.php Cron" | crontab -u www-data -

# Run the following command when a container is created
CMD /usr/sbin/apache2ctl -D FOREGROUND

if you don't name your service in your compose file your db container should be available under a name like "docker_db_1".
Have a look at the container names via "docker-compose ps".
Naming it "db" in the docker-compose file as shown seems to be good enough, because when I use that hostname, the hub can connect to the database. Also, the hub container can ping the database container using simply "ping db". However, the connection to the database this way is only possible by (1) deleting the DNS check in dba_driver.php and (2) setting bind-address to instead of whatever the default is (localhost or, both of which fail).
Delete the dns check. If somebody is challenged by the intricacies of the domain name system, an error message isn't going to change the outcome.

Hi, I find a drawback on hubzilla's wiki app. I like from wikis articles to be easy to link to other articles, but I find that relative paths inside hubzilla wikis do not work as I would expect. More precisely, the root of the relatives path is the hub's hostname and not the wiki's root. This makes it more difficult to import/export wikis from/to other platforms, and to make durable wikis (as hub and channel names can change).

An example of a page in a wiki named "my-wiki":
# Index
* [My cooking recipes](my-recipes)
* [Other recipes](https://recipes-site.tld)

The internal link resolves to
instead of

Have anyone thought about implementing this? What would it take? I barely have coded on php, but if you devs think it's easy to do, I will volunteer for this :)

Thank you!

Hi there, I think I've found a bug on escaping apostrophes/single quote char (may point to other chars too) in the wiki app. You can find it in fadelkon - Directori d'eines lliures i respectuoses. In catalan, we use the "single quote" char in abreviations, like in english.

I found that I can't delete that page. See, the trash icon to delete it looks like this in html:

<i class="nav-link widget-nav-pills-icons fa fa-trash-o drop-icons" onclick="wiki_delete_page('Directori d''eines lliures i respectuoses', 'Directori d''eines lliures i respectuoses', 'bd35871965e147ac743bed4d3e70b694235769be81fd89d8997c72fc618464d2', 'id_bd35871965_713952')"></i>

It doesn't prompt anything on the browser's javascript shell if I click there, however I tried putting the code right away in the shell:
// function wiki_delete_page(wiki_page_name, wiki_page_url, wiki_resource_id, wiki_link_id);
wiki_delete_page('Directori d''eines lliures i respectuoses', 'Directori d''eines lliures i respectuoses', 'xxx', 'xxx')
SyntaxError: missing ) after argument list

I tried escaping \' and wrapping with single quotes (I guess I'm too used to bash), but it showed an error after confirming: Error deleting page.

If someone knows how to solve it, I would be glad to commit to the code. Would the old wikis stop being accessible if we start escaping all special characters? By the way, where are the wikis stored? I didn't find any table and directory store/user looks to have only binary data. I would like to delete while we don't fix the problem for everyone.

Do anything you want. I'm just throwing out thought bubbles.
If you think you've got a better way, by all means share

It may be more work, but I thought about splitting the name into representation name and path name, the same way as channels or unix usernames.  One example, Mediawiki URL encodes '&', substitutes spaces with '_', lets single quote unescaped.

In the other hand, Gitlab has "rich" project view name and "simple" project path name, which only allows upper or lowercase letters, numbers, hyphens, underscores and dots.

I quote is as a common solution that just should work, but unknowing the effort required to implement it.
As reference for this forum, @M. Dent already proposed a fix in the code. Works for me

Fix wiki escaping (Regression tests needed) (!1321) · Merge Requests · hubzilla / core

This implements a custom escaping mechanism that will allow the full range of UTF8 characters in both WIKI names and PAGE names. There should be no regressing issues, but there...

!Hubzilla Development

Australian Industry and Tech Groups Unite To Fight Encryption-Busting Bill - Slashdot


A new encryption bill that's expected to be passed in Australia is facing strong opposition from tech heavyweights. A new group called "Alliance for a Safe and Secure Internet" has been formed by Australian industry, technology, and human rights groups to persuade the country from passing the bill, ...