/* This file is part of Bolixo. Bolixo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Bolixo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Bolixo. If not, see . */ #include #include #include "../bolixo.m" #define EXTERN #include "document.h" #include "steps.h" bool document_button_display_only = false; void document_clickable_img (PARAM_STRING url, const char *image_width, unsigned border) { htmlout (""); htmlprintf ("",image_width,border,url.ptr); htmlout (""); } void document_clickable_link (PARAM_STRING url, PARAM_STRING txt) { htmlout (""); htmlout (txt.ptr); htmlout (""); } static void jump2app (int step, int tab, const char *webtab_add) { static bool is_init = false; if (!is_init && tlmpweb_get_output_state()){ is_init = true; { DIV a("popup"); a.print(); DIV d("popup-content","popup"); d.print(); DIV dd; dd.dispflex().flowrow().print(); DIV left; left.flexfixe().margins(10,10).vmargins(5,0).print(); htmlprintf ("
%s
\n

\n",MSG_U(I_NOTE,"Note")); htmlprintf ("%s

\n",MSG_U(I_ONLYWHENLOGGED,"Only available when logged")); htmlout ("

\n"); left.end(); DIV right; right.print(); htmlout ( "\n" "\n" "\n" "\n" "\n" "\n"); } htmlout ("\n"); } if (tab != 0){ tab = tab*2-1; // Trick because webtab used even tab number to hit the X // and odd to select the TAB. } const char *comma = ","; if (webtab_add == NULL){ comma = ""; webtab_add = ""; } static STATIC_ID allocid; unsigned rectno = allocid++; DIV d; d.sfloat("right").print(); if (!document_button_display_only){ // webtab_add supports adding more than one tab at once. The tabs must be separated by a comma. // We use this so the help screen follows you in the UI. We make sure the help screen is // added first because the current tab is the last one added. This is important for mobiles. htmlprintf ("\n",rectno,rectno); unsigned height = tlmpweb_fontsize()*2; unsigned str_width = tlmpweb_displaylen(MSG_R(B_JUMP)); unsigned width = str_width*3/2; htmlprintf ("\n",width,height); htmlprintf ("\n",rectno,width,height); htmlprintf ("\n",width-4,height-4); htmlprintf ("\t%s\n",(width-str_width)/2,2*height/3,MSG_U(B_JUMP,"Go!")); htmlout ("\n"); htmlout ("\n"); } void jump2app (int step, PARAM_STRING webtab_add) { jump2app (step,0,webtab_add.ptr); } void jump2app (int step, int tab) { jump2app (step,tab,NULL); } void jump_config_account() { jump2app(step_profile,string_f("1:Account~%s",MSG_R(T_ACCOUNT))); } void jump_config_notifications() { jump2app(step_profile,string_f("1:Notifications~%s",MSG_R(T_NOTIFICATIONS))); } void jump_config_interests() { jump2app(step_profile,string_f("1:Interests~%s",MSG_R(T_INTERESTS))); } void jump_config_contacts() { jump2app(step_profile,string_f("Contacts~%s",MSG_R(T_CONTACTS))); } void jump_config_contact_req() { jump2app(step_profile,string_f("Contact-req~%s",MSG_R(T_CONTACT_REQS))); } void jump_config_projects() { jump2app(step_profile,string_f("Projects~%s",MSG_R(T_PROJECTS))); } void jump_config_groups() { jump2app(step_profile,string_f("Groups~%s",MSG_R(T_GROUPS))); } void bolixo_doc (DOCUMENT_POINTER &docpointer, DOC_ID &jump, const char *username, bool display_full, bool index) { glocal bool unknown_user = false; glocal const char *username = username; glocal const char *host = getenv("HTTP_X_FORWARDED_HOST"); if (glocal.host == NULL) glocal.host = "bolixo.org"; document_button_display_only = false; if (username[0] == '\0'){ glocal.unknown_user = true; glocal.username = "some_user"; document_button_display_only = true; } ("",docpointer,jump,display_full,index); <- section("What is Bolixo ?");> Bolixo is a social media site like many others. Unlike most, it is 100% built using free software (and Bolixo itself is also free software). It is also distributed. The Bolixo network is made of numerous nodes (or servers), each hosting users. But users on one node may interact with users on any other Bolixo node.

So what can you do on Bolixo ?

  • Setup private groups to share messages and documents.
  • Setup one public channel and page allowing anyone to see what you are posting. You can invite friends to help you maintain your public channel.
  • Setup your own Bolixo server for your organization.

See the section /- tlmpdoc_link(section_why,"Why Bolixo ?"); at the end of this document. <- section("Getting started");> OK, you just want to use Bolixo immediately. Here is how.

In the following pages, you will often see a button to the right.

/- jump2app (step_doc,0);

It allows you to jump at the right place in the application, while this document follows you. /- if (document_button_display_only){
(You are currently not logged, so the buttons have no effect) /- }else{
(This one has no effect) /- }

/- if (!glocal.unknown_user){ The links presented in this document are generally directly usable. They are formatted using your nickname /- htmlprintf ("(%s) ",glocal.username); and your Bolixo server /- htmlprintf ("(%s) ",glocal.host); . The document is dynamic. /- } <- section("Upload two photos of yourself");> You may upload two photos in your public project. One is a mini photo of you or your avatar.

  • It is called mini-photo.jpg.
  • It must be 40x40 pixels.
  • It is used to identify you with your contacts.
  • It is shown on your public page (which is disabled by default).
  • It is shown on the /- document_clickable_link("https://bolixo.org","https://bolixo.org"); directory if you published it.

The second is a larger photo.

  • It is called photo.jpg.
  • It must be 100x100 pixels.
  • It is used on your public page.
  • It is shown on the /- document_clickable_link("https://bolixo.org","https://bolixo.org"); directory if you published it.

/- string tmp = string_f("1:%s/public",glocal.username); /- jump2app (step_projects,tmp); <- section("Publish short messages, images and videos");> You would like to publish to the world short messages, images and videos.
Here are the steps: /- DIV d;

  • /- d.print(); Add your photo and your avatar in the public project. You must upload a 100x100 image file named photo.jpg. You must also upload a 40x40 image file named mini-photo.jpg with a 40 x 40 size. /- d.end(); /- string tmp = string_f("1:%s/public",glocal.username); /- jump2app (step_projects,tmp);


  • /- d.print(); Add messages in the public group. You can also add images, videos and sound files (mp3,ogg). /- d.end(); /- tmp = string_f("1:%s:public",glocal.username); /- jump2app (step_talks,tmp);


  • /- d.print(); At this point, everything is still private. You have to make the whole thing public. Just click the checkbox "enable public view" and submit. It will be visible here.
    /- htmlprintf ("https://%s/public/%s
    \n",glocal.host,glocal.username); /- d.end(); /- jump_config_account();
<- section("Subscribe to public messages");> You may want to track the public messages of friends, organizations, etc. Instead of visiting all their public pages, you can register your interest and you will get a summary in your main Bolixo page.

Visit the /- tlmpdoc_link(section_interests,"Interests"); sub-tab of the Profile tab and select Add interests. Enter Bolixo nicknames and submit. You will see the avatar of each nickname you add. If you see this image , it means the persons does not have a public page. /- jump_config_interests();

While doing so, you may want to subscribe to two interesting accounts:

  • bolixonews@alpha.bolixo.org: What is going on with Bolixo.
    The public page is /- document_clickable_link("https://alpha.bolixo.org/public/bolixonews","https://alpha.bolixo.org/public/bolixonews"); .
  • bolixodev@alpha.bolixo.org: Development and new releases.
    The public page is /- document_clickable_link("https://alpha.bolixo.org/public/bolixodev","https://alpha.bolixo.org/public/bolixodev"); .

Note that all users are subscribed to the admin account of their node. This is how they learn about activities on their server such as scheduled downtime.

A good way to locate people on Bolixo is to visit the /- document_clickable_link("https://bolixo.org","bolixo.org directory"); . <- section("RSS feeds");> Special accounts have been created by the Bolixo team. They map /- document_clickable_link ("https://en.wikipedia.org/wiki/RSS","RSS feeds"); to Bolixo accounts. All those accounts have the prefix rss:.

You will find there popular news outlets. Add some to your interest list and you will be able to track the world from your main Bolixo page.

If you can't find a corresponding rss account for one web site, send a message to admin. He will create the necessary rss account. <- section("Make yourself visible");> By default, your account is invisible on Bolixo. Unless you tell someone your nickname and node name, there is no way they can find you. There is no mean or API allowing one to list users on a node. There is no way to list nodes either. This is maybe what you want ... or not. You may want to be visible so friends may find you. This is what the /- document_clickable_link("https://bolixo.org","bolixo.org"); directory is all about.

Visit the account sub tab of the profile tab and look at the Public information section. Decide what you want to publish. All fields are optional. Click on the Publish to bolixo.org directory checkbox and submit. Go to /- document_clickable_link ("https://bolixo.org","Bolixo.org"); and search. You will only find the information you entered. Uncheck the checkbox and submit again. Visit bolixo.org and your information is gone. You have the control. /- jump_config_account(); <- section("Establish contacts");> You wish to communicate with someone on Bolixo. By default, you can't. You must request permission. Visit the Requests sub-tab of the Profile tab. You select Send a contact request. You enter the nickname of your new contact and a small introduction. Once your contact has accepted the requests, you can add him to your projects and he can do the same with you. If this person is located on another node, you enter "nickname@nodename". /- jump_config_contact_req();

You can visit /- document_clickable_link("https://bolixo.org","Bolixo.org"); to search for people and organization. <- section ("Getting help");> You can request help by sending a message to the administrator of your Bolixo server. Just visit the talk tab and then the Inbox. Enter admin in the recipients field and then the request. /- string tmp = string_f("1:%s:inbox~Inbox",glocal.username); /- jump2app (step_talks,tmp); <- section("User interface");> Bolixo operates on desktop and mobile devices. There are four areas: main, talk, projects and the three dots menu.

<- section("Main");> Main is a single page presenting the public messages of people you selected /- tlmpdoc_link(section_interests,"(interests)"); . The messages are presented in the center area. Things to know:

  • Only the first 8 lines of a message are displayed. If the last line is "...", it means there is more to see. If you click on the message, it will expand and show the complete text. If you click again, it will collapse.
  • You can click on images and videos to get a larger view.
  • You can use the context menu to copy messages and paste them elsewhere.
  • If you click on the author of a message, you will jump to his public Bolixo page in another browser tab.
  • If you click on a link in the message, a new browser tab is open (to display that link).

Your contact list is presented on the left. You can click on any contact to send a private message. The right area is the Notifications section. It informs you of activities in other areas of the application. You can click on any notification to jump at the proper place in the application.

On the image below, on the right, you can see the Talk tab. Unlike the other tabs, it is colored. It means there is activity in this area of the application.

/- document_clickable_img ("/main.jpg","60%",1);
<- section("Talk");> /- tlmpdoc_link(section_talk,"Talk"); is used to send small messages (including images, videos, audio) to group members. It is also used to send and receive private messages. The talk section is divided in three panes. The left pane presents the groups you belong, the center pane, the messages in each groups and the right pane present the messages and images you have selected.

On the left pane, notice the arrows. They indicate new messages are available in the corresponding groups. Notice also the colored tabs. It is another way to signal new messages.

/- document_clickable_img ("/talk.jpg","60%",1);
<- section("Projects");> /- tlmpdoc_link(section_project,"Projects"); is used to maintain the various projects. This is where you upload, organize, and edit content. This section is also presented with three panes, following the same logic as the talk section.

/- document_clickable_img ("/project.jpg","60%",1);
<- section("Three dots menu");> This menu provides access to less used functionalities. You can access the /- tlmpdoc_link(section_profile,"profile"); section, the documentation and logout.

/- document_clickable_img ("/dot3.jpg","60%",1);
<- section("Mobile devices");> Mobile devices such as cell phones have a much smaller screen, with a completely different aspect ratio. The application works the same, except you can only see one pane at the time. So for the talk and projects areas, you have to swipe from one pane to the other. When you select one area such as talk, you end up in the left pane. If you select one item in one pane, you are moved to the right pane and the item is shown.

Multiple items may be shown in one pane. Tabs are used to access them. The operation is similar to the desktop version. When there are too many tabs, the desktop presents small black arrows to the left or right. The arrows let you cycle through the tabs. On mobile they are way too small. You use smaller swipes to cycle through tabs. Large swipe cycle through panes.

In the desktop, you can close a tab by clicking on the small X on its right side. Again, this is too cumbersome to use on a mobile. The X was removed. Instead, you hold your finger on a tab and it will close itself after few seconds.

You can see here the 3 pane of the talk area.

/- document_clickable_img ("/talk1.jpg","20%",1);   /- document_clickable_img ("/talk2.jpg","20%",1);   /- document_clickable_img ("/talk3.jpg","20%",1);
<- section("Narrow screen devices");> On desktop computers, if the width of the browser window is fewer than 900 pixels, the user interface flips to mobile mode as explained above. Since swipes are not supported on a desktop, two thin gray areas appears on each side of the window. By clicking on it, you can navigate from pane to pane. Here is an example.

/- document_clickable_img ("/narrowscreen.jpg","40%",1);
<- section("Operations on lists");> The same user interface widget is used to manage all lists: in the main screen, in messages and projects. The widget displays a fixed number of entries at once. At the top of the list, there is an information line: it displays the current page number and the number of pages. It also contains links to jump to the top of the first page, to the next and previous page.

If new messages got in while you are reviewing the content of a list, this is also shown in the information line. The new messages won't show in the list until you click on the (N new messages) link in the information line.

/- document_clickable_img ("/list-infoline.jpg","60%",1);
<- section("Context menu");> Many operations on items may be executed by right clicking on them. This works like most desktop programs. On mobile you access the context menu by holding your finger on an item. After a small delay, the menu is presented. <- section("Fonctionalities overview");> <- section("Groups and friends");> Groups are used to communicate with other people. They are also used for access control. Only members of your contact list may be members of groups you create.

Members of a group may write messages to the group shared inbox. If someone adds you to an existing group, you will have access to all messages, including older ones, in the group inbox.

In the Talk tab, you can view on the left side of the screen, all groups you belong.

/- document_clickable_img("/talk.jpg","60%",1);
<- section("Projects");> You can create projects. A project has a name, a description and a list of groups. /- jump_config_projects(); Normally, you must be a member of one of the groups associated with the project, but it is not essential. You could very well act as an administrator of the project without contributing any content. <- section("Messages");> You can send short messages, image, audio and video files to group members. There is no limit on the size of a text message but the interface is not suited for large text. Only the first eight lines are shown. When you click on a message, it is displayed on the right in full. Audio and video messages are presented in popups.

HTML is not fully supported in messages (few tags are supported). If you enter an HTML tag, it will appear verbatim and won't take effect. If you enter what looks like a URL (starting with http:// or https://), it will become a clickable link. You can learn more about message formatting in the /- tlmpdoc_link(section_talk,"talk section"); of this document.

Messages are not kept forever. The policy may vary from one Bolixo server to the other. The default is one week. <- section("Public view");> Each user may have a public page. It has to be enabled in the account configuration. /- if (!glocal.unknown_user){ For example, here is the link to see your public page:

					/- string url = string_f("https://%s/public/%s",glocal.host,glocal.username);
					/- document_clickable_link(url,url);
					
/- }

When you enable public view and the public folder field is set to "none", your public page displays:

  • your photo and mini-photo, uploaded by you in your public folder.
  • Your nickname and the server name.
  • The messages of your public group. These messages may have been written by you or any member of your public group.

When the public folder field is set to "root", the same information is displayed plus the content of the public folder. If you have created sub-folders in the public folder, you can select one. Its content will be used. By default, Bolixo will throw everything it finds in the selected folder: text, images, ... This is probably not what you want. If there is a document called index.html in the folder, it will be displayed. This document should reference the rest of the folder. Here are the rules for index.html:

  • It is normal HTML.
  • You can't write JavaScript. <script> sections will appear verbatim.
  • Relative and site absolute (no host specified) hyperlinks are mapped to the select folder.

You may consider making a friend member of your public group. He will be able to help you with the content. <- section("Public preview",section_preview);> You can see a preview of your public page. Select one folder in the public project and use the context menu to preview its content. You can use this even if you have no public page yet.

This functionality is available to all members of your public group. <- section("Command line tool");> A utility called bofs allows you to perform almost everything you can do from the UI. You can use it to perform backups and restores of your content. Here are few examples:

  • back up the content of your public folder
    <- pre();> /- htmlprintf ("bofs cp https://%s/projects/%s/public /tmp/public
    \n",glocal.host,glocal.username);
  • Send a message and an image to the public group
    <- pre();> /- htmlprintf ("bofs msgs -t --groupname public --groupowner %s -C \"This is a message\"
    \n",glocal.username); /- htmlprintf ("bofs msgs -t --groupname public --groupowner %s -F /tmp/image.png
    \n",glocal.username);
  • List messages in your public group, either using the msgs or ls command
    <- pre();> /- htmlprintf ("bofs msgs --listshortmsgs --groupowner %s --groupname public
    \n",glocal.username); /- htmlprintf ("bofs ls -l https://%s/msgs/%s/short-inbox/public
    \n",glocal.host,glocal.username);
<- section("Digital signature");> (You can find an explanation about digital signature /- document_clickable_link("https://en.wikipedia.org/wiki/Digital_signature","here on Wikipedia");

Every user has a 2048 bits digital key. This key is made of a public and private part. The private part is used to sign documents and messages. The public part is used to validate the document signature. Every document produced or uploaded by a user is signed (using his private key). This also applies to messages.

Without access to the private part, it is impossible to create a valid signature for a document. Said differently, no one can create a document and pretend it was written by you.

There is a public API allowing anyone to download the public key of a user. Currently, the bofs command line utility is making use of that and validate every document it downloads.

Bolixo is a distributed system where nodes are controlled by various individuals. When you write a public message, it is copied from node to node, along with its digital signature. Digital signatures allow one to make sure that messages from you are actually exactly what you wrote. <- section("Operations");> <- section("Profile",section_profile);> This is where you configure all operations. You access this area using the three dots menu on the far right of the application tab (do not confuse it with the three dots menu of the browser itself).

/- document_clickable_img ("/profile.jpg","60%",1);
<- section("Account",section_account);> You manage the account preferences here. This includes interface preferences and the access control/privacy of your public page. /- jump_config_account();

In this screen you select the language, the date format and your time zone. Once submitted, the changes take effect at the next screen update. No need to logout/login.

If you enable public view, the following page will become active: /- string url = string_f ("https://%s/public/%s",glocal.host,glocal.username); /- if(glocal.unknown_user){ /- htmlout (url); /- }else{ /- htmlprintf ("%s.\n",url.c_str(),url.c_str()); /- } This page will present your mini-photo, photo and messages sent to the public group, by you and members of the group (By default, only you).

The next field tells if the content of the public project is displayed. By default, nothing is present. You can display the content of the public project or any sub-folder of the project. In the public project you can preview your public page before it is made public.

The next section control what information is published on bolixo.org directory. By default, nothing is published. Enable the check box Publish to bolixo.org directory, and fill the fields you wish to make public. This information will be sent to bolixo.org and will become searchable. All fields are optional. <- section("Notifications",section_notifications);> Bolixo is made of multiple user interface areas. The notification system was created to help you figure what is going on where. <- section("Notification types");> There are two ways to inform you about ongoing activities. One is passive notifications and the other is email. Passive notification adds some visual cues so you can tell where there are activities in the various areas. It is called passive because it won't do anything on its own: you have to click somewhere (on a tab for example), to trigger a refresh. At this moment the visual cues will show up. Some tabs will use a pink background. Some arrows will be displayed indicating activities.

Passive notification is the default.

Email notification may be used alongside passive notifications. An email is sent whenever an activity occurs (a new message is received, someone tries to establish a relation with you). And you can disable all notifications for a given topic. <- section("Configuration by topic");> Notifications may be configured topic by topic. There are two ways to configure notifications. In the Talk area, you right click on a group or inbox (left pane). The menu presents the Notifications option. Click on it and a small popup dialog allows you to configure notifications for this group.

/- document_clickable_img ("/notifypopup.jpg","60%",1);
<- section("Global configuration");> It is also possible to configure all notifications in the Profile section, using the 3-dots menu. You select the Notifications on the left and a dialog presenting all topics allows you to configure every notifications at once.

/- document_clickable_img ("/notifications.jpg","60%",1);
/- jump_config_notifications(); <- section ("Interests",section_interests);> This is where you manage your list of interesting people. Once set, the main page will track the public messages written by all these persons. /- jump_config_interests();

You do not need any permission to track the public messages of someone. If you see this along his nickname, it means this person has not enabled public view in his profile. <- section("Contact requests to you",section_contacts);> This is where you manage your contacts (people you know). In this page, you can see the contact requests other people have made to you. /- jump_config_contacts();

You click on one request. You will see the message associated with the request. You can either accept it or reject it. <- section("Contact requests from you",section_contact_req);> This is where you manage your contacts (people you know). In this page, you can see the contact requests you have made. /- jump_config_contact_req(); You click on the link "Send a contact request". Enter the nick name of the person you wish to contact and a message.

Use the /- document_clickable_link("bttps://bolixo.org","Bolixo.org directory"); to locate other Bolixo users. <- section("Projects",section_projects);> To exchange with other people, you must create projects. A project has a name, a description and a list of associated groups. Every user has a public project. It is created at account creation time. This project is special. By default, it is private (like all projects), but you can enable public view and its content becomes visible to all. /- jump_config_projects();

When you add a group to a project, you must specify its access rights. A group may have read-only, read-write or inherit access. When you define a group, you can grant access right to each member separately. The inherit access right indicates that the access rights set in the group definition is used. The read-only and read-write access rights override the group members access right.

Access rights are used to control access to content in the project folder. Access right does not apply to messages. Every member is allowed to post messages in the groups he belongs, no matter what access right he owns. <- section("Groups",section_groups);> Groups serve two purposes. They are used to send short messages and access content in projects. At account creation time, the group public is created and you are included as a member. /- jump_config_groups();

A group has a name, a description and members. The members are simply entered separated by spaces, or on new lines. Each member has a nickname, followed by an access right and a role. The access right and role are optional. The default access right is R for read-only and the role is empty. Possible values are R and W. Role is any name you see fit. So far, they have no real use. They will be used as side channels. The nickname, access right and role are separated by a colon. <- section("Talk",section_talk);> In this section, you can

  • Read messages sent either directly to you or to groups you belong.
  • Send messages directly to people or to groups.

The screen is split in three areas or panels.

/- document_clickable_img ("/talk.jpg","60%",1);
<- section("Left panel");> The lines displayed on the left panel correspond to inboxes. When you click on one, the messages are shown on the middle panel.

  • The first line is your private inbox.
  • The last line is your public inbox.
  • All other lines are groups you belong. The first column is the owner of the group and the second column is the name of the group.
  • The arrow to the left tells you there are unseen message in that folder.

/- document_clickable_img ("/talk-list.jpg","20%",1);
<- section("Center panel");> This panel displays the messages in the inbox. At the top, there is a dialog allowing you to post messages. 20 messages are presented at once. The page number and the number of pages are displayed if there is more than one page. Only the first 8 lines of a message are displayed.

If you click on a tab, it selects and displays the corresponding inbox. If you click on the currently displayed tab, it triggers a refresh of the inbox.

/- document_clickable_img ("/talk-msgs.jpg","50%",1);
<- section("Right panel");> If you click on a message (or image), it will show on the right panel, opening a new tab. Videos and audio opens a popup window.

/- document_clickable_img ("/talk-documents.jpg","50%",1);
<- section("Private inbox operation");> Anyone in your contact list may send you a message. And you can send a message directly to anyone in your contact list. You can also send messages to user admin even if he is not in your contact list. This is how you request help.

You can send a message to multiple recipients. Just enter the nickname of the users separated with a space. You can send either a short text and/or upload a file (image, video or audio).

Messages sent this way are copied into the private inbox of each recipients.

/- document_clickable_img ("/inbox-ui.jpg","60%",1); <- section("Groups operation");> To send a message to a group, you enter a small message or upload a file. In general, you do not specify any recipients. If you enter a few recipients, they have to be a member of your contact list.

Unlike private message above, message sent to a group goes into a shared group inbox. This means that a new group member will see old messages.

/- document_clickable_img ("/group-inbox-ui.jpg","60%",1); <- section("Public inbox");> The public inbox is used to receive messages from anonymous strangers. When you enable the public view, you may also enable the public messages. Visitors of your public page may leave a message. You can review the messages here. <- section("Contextual menu");> The contextual menu let you perform various actions on messages.

Copy
Specification of a message is recorded. Once recorded, it may be copied either into another inbox or into a project. Note that you can still paste the message even if you deleted it after the copy.
Paste
Insert a previously copied or deleted message or document in this inbox.
Delete
The message is removed from the list. You can either undelete it, or paste it elsewhere.
Undelete
Note that the undelete functionality is robust. You can delete several messages and undelete them all. They are undeleted in the reverse order they were deleted.
Download
The message will be downloaded to your computer.

Note that you can copy/paste messages from the main screen or from the project tab.

/- document_clickable_img ("/talk-menu.jpg","60%",1); <- section("Message format and appearance");> Messages are not full documents. They are meant to be short, with only a few lines, like the SMS messages used on phones. Nevertheless, there are few ways to enhance the presentation. Here are the rules.

  • A line feed is seen as a paragraph change. This is unlike HTML where a special tag is needed.
  • An empty line will appear as such.
  • Tabs are used and are equivalent to 8 spaces.
  • Anything starting with http:// or https:// is presented as a link. The link is presented as is. When clicking on a it, a new browser tab is open.
  • Few HTML tags are supported. All other will appear as is. Here is the list of supported tags.

    TagDescriptionUsageExample
    <b>Bold<b>some text</b>This is bold
    <em>Emphasis<em>some text</em>This is important
    <strong>More emphasis<strong>some text</strong>This is important
    <sub>Subscriptitem<sub>1</sub>This is item1 and item2
    <sup>Superscript10<sup>2</sup>10 exponent 2 is written 102

  • To embed an image from another site, you simply enter _IMG=URL. Be sure to have either a space or a line feed at the end of the URL. The size of the image will be selected based on context.
  • To embed a video, simply use _VIDEO=URL.
  • To embed a web page, like a YouTube video, use _IFRAME=URL. When embeding a YouTube video, select the URL with /embed/. Pick it in the share dialog, then click on the embed link. You will find there the proper URL.

Note that there are no practical limits for the size of a message. <- section("Sharing your inbox");> <- section("Adding members to your public group");> <- section("Projects",section_project);> <- section("Installing your own node");> You may wish to install your own bolixo node. Companies may elect to do that, so they have better control over their site policies. <- section("Installing packages");> The Bolixo network operates on the Fedora Linux distribution. Bolixo should operate on any Linux distribution. Here are the fedora packages used by Bolixo.

  • bash-completion
  • boost-date-time
  • bridge-utils
  • certbot
  • exim
  • freetype
  • gd
  • httpd
  • libvirt-client
  • libvirt-daemon
  • libvirt-daemon-config-network
  • libvirt-daemon-driver-network
  • libvirt-daemon-driver-qemu
  • lxc
  • lxc-templates
  • mariadb-connector-c
  • mariadb-server
  • mod_ssl
  • python3-certbot-apache
  • strace
  • time
  • vim-enhanced

Here are the packages developed for Bolixo not part of any Linux distributions. The sources for those packages are found in subversion at https://solucorp.solutions/repos/solucorp .

Package nameSources
blackholehttps://solucorp.solutions/repos/solucorp/blackhole/trunk
bolixohttps://solucorp.solutions/repos/solucorp/bolixo/trunk
tlmphttps://solucorp.solutions/repos/solucorp/tlmp/trunk
tlmpsqlhttps://solucorp.solutions/repos/solucorp/tlmpsql/trunk
tlmpwebhttps://solucorp.solutions/repos/solucorp/tlmpweb/trunk
trlitoolhttps://solucorp.solutions/repos/solucorp/trlitool/trunk
<- section("Private Bolixo site");> A public Bolixo site is open to anyone. Anyone can create an account there. This means the site users do not know each other by default.

A private Bolixo site manages its own accounts. An organization, a company would normally create their own private bolixo site. They will create accounts for their employees/members. Normally, all their users (co-workers) know each other and are expected to interact. So local users do not need a contact request prior to communicate.

Private site mode is enabled by entering the keyword private on a line of the file manager.conf. <- section("Why Bolixo ?", section_why);> Bolixo has an interesting feature set. It makes it easy to create projects and invite people to work.

But the real trick is its openness and distributed nature. On Bolixo, nobody is spying on you. <- section("What's the deal with distributed nodes");> Why not create a single large cluster of servers acting as a single entity ?

There are many reasons for that. But the main reason is simply because it is not possible. Anyone, any organization may create their own Bolixo node. Yet, we want all the users on these nodes to exchange with any users on any node. <- section("Social media and social responsibilities");> Creating a social media site is fun and rewarding. Recent events have shown that with great powers comes great responsibilities. <- section("Separation of duties");> Social media sites normally operate by providing a free service to the community (free accounts) and earn some money by displaying some publicity. In many ways social media operate like the old TV channels used to: they provided their content over the air for free, inserting publicity in the content once in a while.

Unlike TV channels, social media send information to their users but the users contribute back. This creates a unique situation for social media to craft publicity perfectly fit to their users.

We have seen over and over that this situation is exploited improperly by social media. The only way to create a responsible social media is to follow a strict separation of duties:

  • The social media is the operator and do not share content with publicists. The social media do not analyze the content created by its users to push specific content.
  • The publicist create publicity and do not access any content of the social media.

This is what bolixo is all about. <- section("Free software");> The Bolixo software is built using free software and is distributed using the GNU Public License V3. Anyone can create his own Bolixo node and this node will interact with other Bolixo nodes. <- section("Distributed");> Bolixo users on one node may interact with users on any Bolixo node. This includes:

  • Following the public messages of anyone on any node.
  • Establish a relation with anyone on any node.
  • Being a member of a project on any node.
<- section("About Bolixo");> Bolixo has been written by Jacques Gélinas. Development started in early 2018. The first public release was done on December 13, 2018.

You can send requests or questions at info at bolixo.org. <- section("Terms of use");>

Usage of your personal information

  • Everything you post on the site is private and only shared under your control.
  • Your email will never appear on the site.
  • We won't share any information, including list of emails with any other entities.

Publicity on this site

Publicity will be shown on this site. Publicists won't have access to any of your personal information and content. We won't share any information or statistics with them.

Offending material

Bolixo.org reserves the right to remove any content deemed offending.

About bolixo.org

Bolixo.org was created to deliver a social media site respecting privacy.

}