cover photo

Hubzilla Development

 Königsberg, Russia,  last edited: Mon, 24 Sep 2018 18:34:26 -0400  
!Hubzilla Support Forum !Hubzilla Development

I found that #Hubzilla (and seems a lot of other #PHP software) have issue with #MySQL 8. In my case this is a latese release 8.0.12.
According documentation MySQL changed Preferred Authentication Plugin on new caching_sha2_password type. It causes authentication errors like

mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

To avoid this replace authentication scheme for users on mysql_native_password by

ALTER USER 'user@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Until software will not be updated to work with the new password schema will be a good idea to leave the old driver on by adding default_authentication_plugin = mysql_native_password in [mysqld] section of MySQL configuration file.
Hubzilla doesn't care about the SQL authentication method. It is opaque to the application and handled by the PDO mysql driver.  So this is suggesting that the PDO drivers also need updating if you decide to upgrade to MySQL8.
I'm now on PHP 7.2.10 and I ran into this problem with both Hubzilla and phpMyAdmin for example. Probably, some additional settings are required on PHP side.

!Hubzilla Development

I created a #Twemoji addon for #Hubzilla . I haven't tested it thoroughly… but maybe someone wants to test or check or something. It probably doesn't even work… but I see emojis on my end…

Originally I was hoping there's a workaround the #EmojiOne free license but they specifically stated

EmojiOne wrote:
May not redistribute assets

So, yeah… not a chance. (Turns out Mozilla Firefox dropped them too and switched to Twemoji early this year.)

Anyway, Twemoji doesn't provide its own emoji.json file, this is the part I need to test further later or tomorrow. I used the emoji.json file provided in another project: (And… I also forgot to include an attribution to them, I'll add them later.)

For this addon, I used the existing emojione addon as base.
  last edited: Fri, 31 Aug 2018 05:28:01 -0400  
Created a separate addon for Twemoji CDN. So far, I got it working but it isn't consistent. Since image replacement relies on having the DOM finished, when it doesn't, it fails; or when there are changes after and the browser did a quick redisplay, it reverts back.

So, currently stuck there with this hiccup. If I can figure out how to solve the hiccup, we can probably move next to actually self-hosting it instead of using a CDN (as a separate addon).

Here's how it looks like in my instance (you may have to refresh if it failed):

It doesn't work for :emoji_codes: (yet) like say :joy: or :smile: or :cry:. Emojis should be entered directly as a Unicode text (very easy for Android and iOS keyboard apps, just tap, but not so for desktop - you can use EmojiCopy).

The source is, as usual, here: bitbucket.

 Königsberg, Russia,  
!Hubzilla Support Forum !Hubzilla Development
#Hubzilla have a lot of nice features including ability to publish articles. But unfortunately I don't see standard app related to articles. Of course I can add it by "Create new app" button by I believe we should have it in standard installation to ease access to this function.
Articles is enabled for this channel but no related app in list.
Can't reproduce here...
Oh, seems I found it. I should install this app before use because it uninstalled by default.
  last edited: Wed, 15 Aug 2018 00:22:50 -0400  
I've been testing federation between different platforms and networks for a while, there seems to be a bug somewhere between #Pleroma and #Hubzilla . Anyone else who is more capable and see which project we should file a bug report?

Here's what I did:
  • On a Pleroma instance: add a Hubzilla channel
  • In a Hubzilla instance, you won't receive a connection request
  • Post a new status in Hubzilla, it won't appear on Pleroma
  • Add manually the Pleroma account that added your Hubzilla channel
  • Post a new status in Hubzilla, it will now show up on Pleroma

* Tested from and (Pleroma) vs. my own Hubzilla hub.

Since Pleroma is using #ActivityPub (and also #OStatus ), I tried the same under #Mastodon and #Misskey (both using ActivityPub) and connections work fine (except for Misskey, it's not receiving new posts coming from Hubzilla, but that's for a different test/report).

Anyway, this is not that important in the grand scheme of things but I think filing a bug report in the proper project is good, so if someone wants to pick it up later, they know it's there. :)

!Hubzilla Development
  last edited: Wed, 15 Aug 2018 18:17:47 -0400  
@Mario Vavti Ahh! Yep, I will. :)
@Mario Vavti, will this fix backported to master branch?
I just got a cinnection request from a pleroma profile. So this seens to be working now. I will not backport this to master before some more testing on eventual regressions though...

 Basel,  last edited: Sun, 19 Aug 2018 12:18:15 -0400  
The bold Y marks a quality offered by the technology (Hubzilla vs. Nextcloud) while the other one doesn't offer it.

Data stored on Hubzilla

Data type (dis)playable in the Web UIeditable in the Web UI (dis)playable on remote machine outside webbrowsereditable remotely offline
CalDAV events calendarYYYY
CalDAV task listnnY (1)Y
CardDAV address bookYYYY
Photos (2)YnYn
Hubzilla metadata of Photos (3)YYnn
Hubzilla wikiYYnn
Hubzilla websiteYYnn
Hubzilla articleYYnn
Hubzilla cardsYYnn
Hubzilla private messagesYY (4)nn
Audio/video (5)YnYn

(1) synronizing data between two remote machines is possible!
(2) tested with .jpg and .gif
(3) title, tags, orientation. The orientation is really just metadata, it doesn't affect the photo file.
(4) compose; delete
(5) tested with Firefox 61.0.1: .mp3 and .mp4 can be played. .3gp, .flv and .mkv cannot be played.

Data stored on Nextcloud

Data type (dis)playable in the Web UIeditable in the Web UI (dis)playable on remote machine outside webbrowsereditable remotely offline
CalDAV events calendarYYYY
CalDAV task listYYYY
CardDAV address bookYYYY
IMAP notesYn (6)YY
.pdfYY (8)YY
.csvY (7)Y (8)YY
Audio/video (5)YnYY

(6) deleting is possible
(7) not formatted though
(8) with add-on
The Nextcloud app store lists furthermore apps which promise online (dis)playing and editing of, mindmaps, a password manager and a ebook reader. I didn't test them though. I did't check neither if offline editing of the used data types would be possible. But it would be worth thinking about bringing those features to Hubzilla.

Data types missing on both Hubzilla and Nextcloud

Out of offline editable data which can be neither (dis)played nor edited yet on both Hubzilla and Nextcloud, I mention those which I find interesting (non-exhaustive):

    [* ] Anki cards package (for learning languages, GNU Affero General Public License. A syncing service including online displaying/editing is offered by
    [* ] Tiddlywiki (If syncing and offline editing of the native Hubzilla wiki would be impossible). But it looks like syncing is not a feature of Tiddlywiki until now: Saving after editing your html-file doesn't overwrite the file, but forces you to download a new html-file.


Recently I've been on a 8 hours ride on a train in a country where I have no cellular carrier data plan, and the WiFi offered by the rail service which I expected to use was turned off on that train. Thus I wasn't able to work on my wiki which is stored in #Hubzilla. This is just one use-case for the need of having a syncable #offline copy of a file stored in Hubzilla. Others cases would be i.e. when working with my laptop somewhere in the nature where there's no carrier network (it's actually what I am longing for these days since it's so hot in the city). To avoid misunderstanding, I like to mention here that #syncronizing is not the same as importing/exporting.
I dare to give a simple statement: In the chart about #data types in Hubzilla each field should contain a green Y (=yes), except for image/audio/video editing. This chart will help developing the necessary apps or changing the data organization. It summarizes my evaluations of the enabled features on I know there are other features that can be enabled, but I couldn't test them (I don't run my own server). I'm not aware of a list of existing features/plugins/apps. (Is there a such list?)
In the second chart, I added the same information for #Nextcloud (non-exhaustive; just main data types for comparing reasons). In this discussion @Mike Macgirvin brings up the vision of turning "all the extra features etc. into apps" similar to Nextcloud. When getting closer to Nextcloud in terms of features, Hubzilla needs to become competitive in terms of features. Together with the nomadity and the superiority in privacy, this will make Hubzilla unbeatable.
Please comment below about if you agree or don't agree with my statement and my evaluation (if necessary case-wise).

A related question I'm wondering about is:
Is the synchronizing frequency depending on the server? If yes, Is it set by the hub administrator, or can it be set by the cannel user?
!Free / Libre Open Source Softwares !Hubzilla Development !Hubzilla Support Forum !Hubzilla Advocacy !Disroot Community
I think you'll be interested in this Github issue 8459....
Allow federated storage to be stored locally
I edited the initial post:

    [] I renamed the fourth column from "syncable to/from remote machine" to "(dis)playable on remote machine outside webbrowser" because, actually, accessing data with other tools than the browser is what I sometimes like to do.
    ] I integrated @sunjam's Feedback about Nextcloud.
    [] I removed in the Hubzilla table the ability to edit in offline mode: photos, pdf, txt, videos, audios and csv (because the WebDAV access procedure doesn't store a copy of any file on your remote machine).
    ] I removed in the Nextcloud table the ability to edit in offline mode: Etherpad/Ethercalc (because the system doesn't store a copy of the file on your remote machine).
Nextcloud edits offline be allowing access to it’s files and services from third party devices via rest api’s. Example, desktop and mobile apps that store, sync, and merge local copies of whichever files and folders you choose from the web server. This includes all etherpad, ethercalc docs, tasks, calendars, contacts, txt, and everything else.

 Basel,  last edited: Mon, 23 Jul 2018 11:58:56 -0400  
Maybe it's time to start an offensive campaign for #zot on different pertinent media channels, to increase the awareness of it. Please consider this post as an initiative of a brainstorming. It's addressing those who know most about the communication protocols, and I'm unfortunately not one of them (yet).

What could be the content of the publicity campaign for zot?
Maybe the zot-relevant part of the interview by Sean Tilley with Mike, which could be summarized and added with a comarison chart of the different existing protocols?

What do you think about:

I'm not technique affine, so I don't know which are the IT and FLOSS relevant channels, but maybe

It seems again another protocol for a #decentralized network appeared, called #LBRY ( It doesn't seem so interesting to me, but I mention it anyway.

!Hubzilla Development !Free / Libre Open Source Softwares !Hubzilla Advocacy
Thanks for sharing these links; I had missed some of those discussions. Finding a way to implement nomadic identity and cloning in Nextcloud would be a game changer, and I'm not even talking about any kind of federation or interface with Hubzilla hubs. The PHP framework is so similar that it's hard to believe it would take a super genius to get at least a basic version of nomadic identity working, where you connect two or more "federated cloud" identities from otherwise independent Nextcloud instances. The philosophy of owning your data and having privacy is so fundamental to the Nextcloud mission that I'm sure they would entertain the idea; however, a lot of work would have to be done to make something that works decently before presenting it to that community.
Glad this interests you! Please do share any thoughts or guidance on those github issues and forum links. Biggest issue in reaching out to Nextcloud is I do not have not enough technical background to accurately describe how the integrations could work and benefit them. :)
Please check the new changes on the Wikipedia draft article.
For all the external links, I mentioned the source, the date and the author. And I organized them as follows: sort: source; order: publishing date. And I added more external links.

 Königsberg, Russia,  last edited: Sun, 01 Jul 2018 16:25:41 -0400  
!Hubzilla Development
I'm use Hubzilla with latest PHP 7.2 release under FreeBSD environment (H2O HTTP/2 web-server + PHP-FPM).
It works quite fast but I think it can be faster with PHP opcache.
Perhaps experienced Hubzilla hub owners have any recommendations on opcache settings?
 from Diaspora
Czy ten wpis jest widoczny na Hubzilli?
!Hubzilla Development

Ta linijka dziwnie wygląda na Diasporze.
  last edited: Thu, 12 Jul 2018 15:26:52 -0400  
Well, let me publish my results on #PHP opcache usage with #Hubzilla.
As I wrote above I'm use PHP 7.2 in #FreeBSD 11.2 environment.
I installed php72-opcache package and changed only two parameters vs default configuration

root@beta:/usr/local/www/ # cat /usr/local/etc/php/ext-10-opcache.ini

After about a week of usage I might say that 64Mb memory buffer for opcache is more that enough not only for Hubzilla, but for other stuff that I have on same server (e.g. Roundcube, my own blog based on #Bludit flatfile #CMS and phpMyAdmin).
Memory consumption is remains less than 50Mb with cache hit rate about 99.96%.


Here is scripts usage visualisation.


And about performance. I didn't run special benchmarks but subjectively page load speed was dramatically increased. So I can recommend to use opcache for Hubzilla.

Steffen K9 ?Steffen K9 ? wrote the following post Sun, 13 May 2018 05:30:58 -0400

Can you as Sysadmin confirm, that Friendica-node induced less maintenance effort by comparsion to Hubzilla?

Hmm. That's tricky. I run Hubzilla on master branch (stable release) most of the time. So there is not much to do besides an update every couple of weeks or even months.
Friendica is running on develop branch (RC at the moment). And because the Friendica devs are very hardworking people <3 providing a lot of code updates, I "have to" pull new code on a daily basis.
I guess both were on the same level of maintenance efforts if I would run both instances on master (stable) branch.

#comparsionHubzillaFriendica #comparsionHubzillaToFriendica #comparsionHubzilla2Friendica #maintenanceEffort #HubzillaMaintenance #Hubzilla #FriendicaMaintenance  #Friendica @Hubzilla Development+ @Zot universe NEWS+
I'm wondering how stable is dev and if I should run it in production as a public hub.

I would not recommend doing that.
Production/public sites should probably stay on master for a sense of stability - unless it is specifically a developer community. We push a new release every couple of months and the time creeps by before you know it. That said, there have been a number of changes recently which were specifically to address issues encountered in the disroot configuration, which is slightly atypical of our standard configurations. 'dev' will ways be less stable than master (it's the nature of the beast); but we sort of need some feedback on some of these fixes and ensure they are up to scratch before the next release. If anybody at disroot is interested in being involved in ongoing development, a dedicated dev/test site might be a workable option so you don't have to hack on your main site "live" and can also keep up to date with (and even participate in if desired) the latest developments.
Yeah, I'll be setting up dev instance this week (probably weekend) just to be able to break things especially if we go live soon. We really want to start being more involved in development part fo the project as well, so having instance you can break is a must.

But as you pointed out some of (very crutial) for us changes are currently jailed in dev so a tiny 0.0.X release would be great, but I certainly dont want to put any preasure on you guys.

  last edited: Mon, 16 Apr 2018 16:19:45 -0400  
!Hubzilla Development

Hi, I did this by making a widget and adding a bunch of pdl files to the redbasic theme. Each .pdl has this at the top:


It's not perfect, as I'd rather have the icons to the right of the profile dropdown, but that would require editing the navbar code outside of any theme,  I  think... ? Is there any other way?

So new theme! Greenbasic
If you are on, go to menu profile -> settings -> display to select it.
I'll upload it to my git account as soon as I get time

#hubzilla #theme #green

galettesaucisse (Galette Saucisse)


galettesaucisse has 3 repositories available. Follow their code on GitHub.
In a theme there can be schemes too.
  last edited: Wed, 18 Apr 2018 16:24:52 -0400  
Yes, this is an experiment really, I wanted to learn how to build a theme that works across a site without user input. Plus it has a modified navbar.
I'm hoping to get into #Hubzilla development eventually so I've started learning #PHP. I'm reading the PHP Manual. Are there any other good resources I should check out?

!Hubzilla Development
PHP: The Right Way
An easy-to-read, quick reference for PHP best practices, accepted coding standards, and links to authoritative PHP tutorials around the Web
I am afraid that is already fixed

That is quite all right. He could help with the approximately 5843 other things we want to improve.

Also, thank you Mario.
Learning the language is one thing. One of the most prolific developers early on (many old-timers here will be able to pick up who I'm talking about) started by watching every git commit and reading the detail and what was changed and why. It's like learning a foreign language by total immersion. It teaches you the entire culture and way of thinking and you'll find useful information and little bits of code tucked away that are incredibly valuable but you might never learn from just browsing or grepping the source tree.

 East Palo Alto,  last edited: Fri, 30 Mar 2018 06:12:41 -0400  
!Hubzilla Development

What are the best tutorials for building websites with Hubzilla?  For example, is there a tutorial that explains how the Hubzilla site itself ( was built?

#tutorials #hubzilla #ecommerce

 San Francisco, CA (37.7840152 -122.39734259999997) 
!Hubzilla Development

If you're running the dev branch of #Hubzilla, you'll see that a new feature has landed for channels – Articles

This is a really exciting feature to me, as I hope to build We Distribute on top of it.

Here are a few relevant files to understand different pieces of it:Here's a quick test article, as it appears today:

I'd love to explore the theme development side of this, specifically to make Article objects look like an article you'd see on any popular CMS that features them. (Ars Technica, the Verge, Mashable, etc). This may require me to open my first actual pull request for the Hubzilla project, as this is a feature of huge interest to me. The first "useful" thing I can think of might be a thumbnail field, which sets the og:image property of the article when shared.

Eventually, I might dive into either building a page or a plugin that shows all published Article objects on a hub, sorted by published date, complete with title, link, and author information.
 from Diaspora
I guess articles don't federate? Or just not yet? Or didn't federate here :P
@Jason Robinson ? I guess you missed Mike's comment since he doesn't use Diaspora federation, so I'll post it:

Articles do not federate naturally. They are interactive. So think of it like an old fashioned blog.

Articles can provide summaries. These do not use industry standard methods of providing summaries since Mastodon has turned all of these into 'content warnings'; basically precluding anybody using them for summaries ever again.

Webpages are not interactive. Cards are interactive and actually very similar to articles but differ in the fact that one is called a 'card' and one is called an 'article'; and therefore readers might have different expectations of what they are and what they do. (The simple answer is that one is a 'card' and the other is an 'article'.)

A lot of people seemed concerned and upset that we provided webpages and cards and wikis and interactive posts but did not have a thing called 'articles'. Now we do.

Hope this clears things up.

Incidentally you can also provide summaries in posts and comments, but don't do it. The reason is that these could federate with Mastodon and Diaspora and GNU-Social and the summaries won't work in other networks (because Mastodon has made it impossible or impractical to try and translate to standard 'summary' fields without generating warnings). So we don't translate it at all. Readers on other networks will see a mess. Save summaries for 'articles'. That's what they're there for.

Missing at this point is separate feeds for articles (and cards and perhaps webpages). This would be a useful tool except for the fact that feeds use standard communication formats which provide separate 'summary' fields and Mastodon has pretty much fucked these up for everybody. So that's why we don't have article feeds. We might be able to provide 'summary' feeds and separate 'article' feeds at some point but it would be so much better to just rid the world of Mastodon so we could do this the right way once and be done with it.
Just for the record: I didn't !

 San Francisco, CA (37.7485824 -122.4184108) 
@Hubzilla Development+

It's a tough nut to crack, but it's possible to export a #Godot game to HTML5, then embed the resulting game into a #Hubzilla addon. Right now I'm experimenting with loading a platformer game demo into the skeleton add-on as a base. I've got the files spread out and structured into a hierarchy, and I hope to get the player to successfully load with these changes. After that's done, I'll be able to put it into a proper view template, and wrap some native interface elements around it.

My hope is that this could provide a method for sharing my games on the web, in something that could be featured as a personal gallery. A pipe dream version of that may be some kind of "Game Library" add-on that can load and store related Godot HTML5 games and display them in a gallery of sorts.

As far as HTML5 games are concerned, there are generally a number of limitations. Keyboard input works well with Godot, but right-click interactions seem to be off the table for now. Games also seem to be affected by load times proportionate to the overall file size, although it seems that this can be handled gracefully when it comes to loading individual scenes (game levels or rooms). I'm curious to test this out with my own projects as their size and complexity scales up.

Another interesting aspect is that Godot can be made to interact with libraries and environments outside of itself. In theory, it may be possible to provide some sort of bridge between Hubzilla's own hooks and the game engine. One simple way to demonstrate this might be for the game to welcome a player by their channel name.
I participated in a Godot workshop last year, this is an awesome idea... another  obvious thing would be for Hubzilla to keep track of player scores.
I forgot to reapply the MySQL settings I had determined for They are reapplied now so hopefully it will be more stable.
Thank you Andrew. and run now rather quickly :-).

The #YunoHost developers invited me to the new YunoHost-Apps "organization" on GitHub, which allows you to create teams with associated repositories. I created a #Hubzilla team, which will host the hub installation package I created for YunoHost (and have help from @Anmol maintaining).

#outreach @Hubzilla+
@Anmol The hubzilla-yunohost repository is now here:

If you would like to update the sources to the Hubzilla release tagged 1.4 and test it as you have done in the past, it would be appreciated.
There are of course no alternatives for @Hubzilla+, but I updated this page on Maybe up-voting can help our PR a bit.

Hubzilla Alternatives -
Popular Alternatives to Hubzilla for 31 platforms including Mac, tvOS, PlayBook, and BSD. Explore 15 websites and apps like Hubzilla, all suggested and ranked by the AlternativeTo user community.
Than the Red has to be removed, to avoid confusion.
I reported the Redmatrix entry has a duplicate of Hubzilla.

Has anyone investigated the possibilities for authenticating #WordPress users with #Hubzilla? If you could create a WordPress site whose user accounts are associated with Hubzilla channels, and you combine this with something like a Private Content plugin, you would have a powerful extension to a hub. Perhaps a first step is to try the OpenID plugin, since Hubzilla is an #OpenID identity provider already.

At the end of the day the choice will primarily come down to whether the things you want to access involve multiple authorisation domains/realms. This is where OWA shines. It's great for accessing individual access controlled web resources. If you just want to authenticate to a server and "do stuff", OAuth2/OpenIDConnect is the gold standard.
how do you tell when is the url for for your openid in hubzilla? is your your channel?  the onything I ever tried to connect to it was a wordpress blog, but I wasn't sure what the appropriate page is in hubzilla was for the account.
The "traditional" openid uses if I recall. openid_connect is very close to release (I believe basic auth and credentials management is complete) but is still being tested. There is no scope support yet and dynamic client registration needs a bit more work but if you're running current dev and have an openid_connect enabled service you should be able to boostrap it.

I found it very easy to #install a brand new hub using the .homeinstall script in the #Hubzilla repo. Here are the steps I used to install it almost completely automatically:

1. Created a new DigitalOcean droplet (Debian 8.3 x64 / 512 MB Memory / 20 GB Disk / NYC3)
2. Assigned the hub domain name to the new droplet IP address using RackSpace DNS services
3. Logged on to the new server and executed the following commands:
0. apt-get install git
1. mkdir -p /var/www/html
2. cd /var/www/html
3. git clone .
4. nano .homeinstall/hubzilla-config.txt
5. cd .homeinstall/
6. ./
7. sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php5/apache2/php.ini
8. sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php5/apache2/php.ini
9. service apache2 reload

4. Opened the hub webpage in a browser and completed the steps to finish installation

I chose to install a #UNO hub configuration to see what it's all about.

Okay, I verified today that the /.homeinstall/ script works (core: 55ab5360d984700e3145a5933cd1275cfb54b76c, addons: 72ecf029325ec9aa353f87f1cd2951c934d1d3a4) on a fresh Debian 8.3 x64 DigitalOcean VPS.

For some reason, I had to manually install php5-curl (apt-get install php5-curl) after the script ran even though this should have been installed by the script (/.homeinstall/
I had to manually install php5-curl

Strange. We should watch this.
@Andrew Manning Thanks for the changes in the homeinstall script. Don't hesitate to change something there. I do not cling to "my" script or my work in general. I am happy if somebody improves it.

I just updated the to reflect the changes you made.

I created a new repository of plugins for #Hubzilla called simply Hubzilla Plugins, currently containing only one plugin: Embed Photos. This plugin allows you to more easily embed pre-existing photos/images to your posts by adding a button to the post editor that launches a photo album gallery browser. It seems to work pretty well, although it is a bit sluggish due to the inefficiency of the database queries and lack of similar optimizations. The screenshots embedded in this post were added automatically using the plugin.

I look forward to feedback in the form of discussion here and issue reports so we can push this thing along to a v1.0.




[nobb][ zrl= ][ zmg=172x117 ][ /zmg ][ /zrl ]

[ zrl= ][ zmg=782x430 ][ /zmg ][ /zrl ]

[ zrl= ][ zmg=793x448 ][ /zmg ][ /zrl ]

@Hubzilla+ @Hubzilla Plugin Ideas+
I've almost got this working, but I can't get the modal dialog to appear for the comment box embed photo button. I get the modal backdrop but no popup. Perhaps it is because the modal is defined within a "btn-group" class div?
This is quite cool.. is this also available to be seen when sending a private message?

did we have in the past a similar embedded photo button when you uploaded a new one (not from exisiting photos) ? .. although, I could totally be remembering wrong..
That still exists. It's the paper clip icon (attach file). Originally there were separate buttons for uploading a photo and uploading a file attachment so we consolidated them.