Giter Site home page Giter Site logo

dir's Introduction

Friendica - your open and free social network

Welcome to the free social web. Friendica is a platform for decentralised social communication linking to other independent social and corporate services.

Friendica connects you to a federated communications network of thousands of servers called the Fediverse. Through various protocols you can interact with anyone on Friendica, Mastodon, Lemmy, Diaspora, Misskey, Peertube, Pixelfed, Pleroma and many more. Receiving content from Tumblr, WordPress and RSS is also possible. Friendica allows to import and mirror your content via add-ons such as ITTT and Buffer. You can control the privacy scope of your content.

Being part of the Fediverse allows you to be free from data-harvesting corporations. Enjoy open social communication, independent of any specific provider.

Join Friendica today or set up your own Friendica instance.

Friendica on desktop

Frio theme in desktop browser

Friendica on mobile

frio on mobile, dark color scheme frio on mobile, light color scheme

Endorsements

dir's People

Contributors

andyhee avatar annando avatar beanow avatar blorteau avatar imgbotapp avatar mrpetovan avatar quix0r avatar tobiasd avatar tugelbend avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dir's Issues

Support the "account-type"

Since the last versions we can define an account type (Person, Organization, News, Community). It would be good if the directory could support this.

Sync sites

The syncing code can be expanded to share all sites, or sites with a healthy score.
This allows for quick discovery of new sites without having to iterate over profiles.

Review and/or provide searching API

An API should be available to be able to reproduce the search results on a Friendica installation.
This includes all profile data, a mirror of the image. And possibly API documentation for this.

Add search on tags

Suggested by @tobiasd :

If you follow a link in the sidebar, say "friendica" I'd expect seeing the people having tagged themselves with "friendica" insteat you end up on the search for friendica which includes node URLs ala "friendica.example.com".

Both the trending topics aside and the profile hashtags trigger a regular search on all the profile fields, which isn't expected. This new search type would only look into tags.

Feature: CSV export of stats

The stats in the site health pages are fine but the graphs are not great.
For allowing your own calculations and graph generation, lets export statistics in CSV.

Site-level noscrape.

Build in support for using noscrape to pull a full list of profiles that should be in the directory.
This way we do not need to sync individual profiles, but we can sync full sites at a time.

Missing isset() calls causing noisy logs

As per this discussion https://social.isurf.ca/display/c443a55c965ad120636473c075262327 the apache logs show a bunch of noise:

[Fri Apr 13 14:20:35.564499 2018] [proxy_fcgi:error] [pid 13331:tid 139943668336384] [client 27.130.68.3:51872] AH01071: Got error 'PHP message: PHP Notice: Undefined index: pdesc in /home/socialdir/dir/include/submit.php on line 134\nPHP message: PHP Notice: Undefined index: locality in /home/socialdir/dir/include/submit.php on line 135\nPHP message: PHP Notice: Undefined index: region in /home/socialdir/dir/include/submit.php on line 136\nPHP message: PHP Notice: Undefined index: postal-code in /home/socialdir/dir/include/submit.php on line 137\nPHP message: PHP Notice: Undefined index: country-name in /home/socialdir/dir/include/submit.php on line 138\n'

Filter for explicit content nodes in Server list

Now that node admins can mark their Friendica nodes for explicit content communities friendica/friendica#5373 it would be nice to have a display filter for the server list and account listing that filters out those nodes by default. There should be an option for the visitor of the directory to show those hidden entries from the listings.

Directory admin should also have a possibility to mark nodes for explicit content for the directory node.

Make the maintenance.html page configurable

From a suggestion from both @annando and @tobiasd, the current static maintenance page refers to my own Friendica account as a contact point while the directory is down for maintenance.

The plan is to make the page read the contact URL from the .htconfig config file.

Decentralized Network Clarification

Hello respected developers. In the wake of the #DeleteFacebook movement I have recently tried Friendica and I have loved it. I want to get word of it out, but because it’s not a widely used platform, I am wanting to attract attention to it through a video I want to do. Though I wanted to clarify somethings before I write my script for my video.

In the remaining body of the message, I have tried to defend a decentralized network and what I understand of how it work. I am not super tech savvy in terms of running a server and coding, but from a general point of view here is what my friend and my conversation was about. I hope that after reading this, if there are corrections or things I have missed, become clarified by you and that you can help. The video will be basic and covering how to sign up, how Friendica works and some cool features you can turn on. I will post the link when it’s ready to be viewed and will gladly appreciate subscribers as well. I hope you can help me out.

One of my friends said there is no way to hide on earth and I told him that, Decentralized Software is your gateway and privacy ceases to exist through through open source software. I told him about Friendica and hopefully I said the following few things right.

“Friendi.ca for example is a Facebook that’s decentralized, your in control of your data and the day you delete your account your forgotten by the system”.

He questioned that if it really is decentralized and I said, “Think of it as getting a Facebook without Zuckerberg monitoring your data. No fake news, no nothing. It’s just a platform where you express yourself and you can even chose who to share your views with.”

He then said, “Nothing is safe”

To counter it, I said, “Decentralized Servers - in order to run a decentralized network - have that code installed and set up that people can’t change it, Inly do upgrades to the software. So if I set up a Friendica server, I can’t see who signed up. I can only see that a share (file) of your name exists and I can’t touch it or access it, it’s untouchable. Plus new upgrades have to be maintained else the server owner gets marked off the list. Open source in that way is a blessing and even more the government can’t force Open Source people to be exposed bc more likely - a lot of people would be exposed and that’s to risky enough to start Privacy wars.”

He then later asked, “Is there even any privacy on fb?”, to which I responded, “Not really. Your best options for privacy is decentralized tools. I’m sure they can access every transcript of a person, I talked to. While they can deny it at the moment, but let a complaint be filed of misdemeanor by someone saying something bad- and they will pluck those chat logs like it was an easy game.”

  • this is the end of our conversation, but please correct anything wrong I might have said and share with me how this works so I can further educate my friends about it.

Thank you.

Feature: build stats pruning functionality

After running the maintenance jobs for ~2 months now, I have generated 6.2MB of statistical data about site-probe speeds and profile scrape speeds. These are never displayed as detailed as they are stored in the database. So I think the timespan for these high detail statistics should be limited and older results should be averaged to save space.

  • Add a threshold after which site-scrape will be a daily avg.
  • Add a threshold after which site-scrape will be dropped.
  • Add a threshold after which site-probe will be dropped.

wrong download link

On the /servers page the download link (beneath "hosting your own") is wrong.

Locations Sidebar Results

When clicking USA in the locations side bar it shows only one result (currently - UX Watchdogs Public Group). However, when scrolling through the full list, there are many profiles with USA as their location.

Short statistic on the directory servers

I think it would be helpful to have a very short statistic on our directory servers about the size of the friendica network.

I thought about a line like "There are 300 Friendica servers overall and 10 Friendica that are open for public registration". Or something like that.

This idea came from when I was watching the-federation.info and saw only 66 friendica servers whereas my servers statistic sees nearly 300 servers. This pushes people away that are new to the topic federated social networks. Even people that are already familiar with it e.g. coming from GNUSocial just look at those numbers, keep asking if this is a serious project.

dir.friendica.com cronjob not working

When I compare the stats for dir.friendica.com with those on my experimental server, I can tell that the cronjob is not doing the maintenance jobs.

Possibly the cronjob is not configured yet, if not can you report an issue with any error logs?

Feedback loop between multiple servers with push enabled

When we receive a URL through the submit endpoint, we immediately store this URL in the sync-push-queue table. We then submit this URL to the sync-targets during the cron_sync task. However, if the sync-targets have push enabled as well, the same profile keep being submitted between the two or more directories.

First of all, a missing ordering key in the sync-push-queue made that the same profiles always ended at the top of the list, which prevented the rest of the list from being processed as they were re-added almost instantly, receiving them from the remote directory(ies?).

Second of all, there should be a submit cooldown for profiles. If a profile has been submitted in the last X hours, there's no point in processing it again, which would effectively break the feedback loop, as it wouldn't be added to the push queue, etc...

Third of all, this was causing massive back up queue in MySQL while trying to simultaneously delete tags during the submit procedure and retrieving tags for search. We need a better way of updating the tags, especially if they didn't change between two submissions.

Dynamic version scoring

The health scoring function health_score_after_probe at include/site-health.php attributes scores to older versions. However this is hard-coded.

The database keeps track of what versions sites are running though. As can be seen for example in http://dir.friendi.ca/versions which comes from the site-health table's version column.

Since this follows a semver-like pattern it could be parsed and used to determine which stable major and minor versions are released. Meaning the scoring algorithm won't have to be updated every time.

Alternatively we could ask the Friendica devs to move the version number from boot.php to a separate file, like VERSION so we can request this file directly from the github master branch.

Server health tests are a little unfair due to absolute timing values

As per this thread servers that are further geographically from a directory server get lower health scores due to the latency involved.

There's been some discussion on how to adjust the absolute curl timing value, such as:

  • Grab the average or median value of a series of pings to the server in question, and subtract that from the curl time (perhaps with a correction factor - maybe double that ping value before subtracting due to TCP handshake response time, etc.)

There may be more that could be done, but perhaps some fairly simple 'corrective' factors around that absolute curl process time would be helpful with health scoring the servers that are further away network-wise.

Sync target sharing

The syncing code can be expanded to share sync targets with other directories.
This way directory admins can easily enable syncing with new directories.

Update Version Check, including partical automation

Version check in site-health.php needs some attention. Does it work with the new style i.e. 2018-05-dev?

Everything that's not 3.6 or above should be "Somewhat outdated". Capping for deprecated versions should be versions less than 3.3.x (that's code older than four years that had undergone major changes!).

It would be nice to automate the process for "Somewhat outdated" comparing it against the version file of the master branch.

	//Version check.
	if (!empty($version)) {
		$versionParts = explode('.', $version);
		//Older than 3.3.x?
		//Your score can not go above 30 health.
		if (intval($versionParts[1]) < 3) {
			$current = min($current, 30);
		}
		//Older than 3.6.x?
		elseif (intval($versionParts[1] < 6)) {
			$current -= 5; //Somewhat outdated.
		}
		#TODO: See if this needs to be more dynamic.
		#TODO: See if this is a proper indicator of health.
	}

health page not working

The /health page produces a WSoD due a parsing error.

PHP Parse error: syntax error, unexpected end of file in mod/health.php on line 396 Errors parsing mod/health.php

Next version of the directory

I've been spending the last week or so working on a new version of the directory based on somewhat recent PHP libraries. I finally have a working prototype to show: https://dir.friendica.mrpetovan.com

This week I will create a new repository on https://git.friendi.ca named friendica/friendica-directory with the dump of the initial code before I keep adding features. This GitHub repo will ultimately deprecated once I add a version endpoint which will affect the new directorys behavior (namely, avoid any submission)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.