/* 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" #include "../documentd_menu.tlcc" void util_draw_dotmenu(const char *id, bool, bool); bool document_button_display_only = false; static DOC_BUTTON_SPECS specs(false); void button(const string &svg, const char *txt) { htmlout ("

\n"); htmlprintf ("
%s
\n" ,specs.radius,specs.width,svg.c_str()); htmlprintf ("
 %s
\n",txt); htmlout ("
\n"); } void buttons(const vector &svgs, const char *txt) { htmlout ("

\n"); for (auto s:svgs){ htmlprintf ("
%s
\n" ,specs.radius,specs.width,s->c_str()); } htmlprintf ("
 %s
\n",txt); htmlout ("
\n"); } void document_draw_menu() { htmlout (" "); util_draw_dotmenu("sample",false,false); htmlout (" "); } 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 ?",section_intro);> 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",section_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 of yourself, one large and one small. The small one is usually a mini photo of you or your avatar. You can achieve this using the Account configuration dialog. /- jump_config_account();

Or you can do it by uploading files in your public project.

  • 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",section_publish);> You would like to publish to the world short messages, images and videos.
Here are the steps: /- DIV d;

  • /- d.print(); Make sure you have uploaded your photos using the Account configuration dialog. /- jump_config_account();

    (or, using your public project)
    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",section_ui);> Bolixo operates on desktop and mobile devices. There are four areas: main, talk, projects and the three bars menu.

<- section("Main",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. Private messages (messages sent directly to you by one of your contacts) are also displayed. 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 (right click) to copy messages and paste them elsewhere. You can also use the context menu to reply to private messages.
  • For public messages, if you click on the author of a message, you will jump to his public Bolixo page on another browser tab.
  • For private messages, if you click on the author, you will jump in the Talk section and will be allowed to reply.
  • If you click on a link in the message, a new browser tab is open (to display that link). If you click using the middle button a new browser tab is open, but the focus remains in the current tab (Bolixo).

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.

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 in a tab on the right pane.
  • You can use the context menu (right click) to copy messages and paste them elsewhere. You can also use the context menu to reply to messages. You are then redirected to your private inbox if you were not there already.
  • You can use the Open in tab context menu option to display a message in a tab on the right pane.

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. You can play various multi-user games as well. 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 bars menu");> This three bars menu /- document_draw_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 bars menu /- document_draw_menu(); on the far right of the application tab (do not confuse it with the three bars 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 presented. 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.

You can also upload your mini-photo and photo. This is equivalent to uploading the files mini-photo.jpg and photo.jpg to your public project.

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 an orange 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-bars menu /- document_draw_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.

To add one person, hit the Add interests link at the top of the screen. A dialog appears on the right. Just enter the nicknames of Bolixo users you wish to track. You must enter the nickname and the server (user@some_bolixo_server). Once done, click the Add button.

You can locate Bolixo users using the search dialog. It connects to the /- document_clickable_link("https://bolixo.org","bolixo.org directory."); Do a search and just click on one userid in the result set. It will be added to the dialog above.

/-document_clickable_img ("/add-interests.jpg","40%",1);

To stop tracking someone, right click on the proper line in the list. A popup menu shows up. Use the Delete option. <- 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 nickname of the person you wish to contact and a message. If the user is on another Bolixo server, enter his nickname followed by the server name like this: nickname@server_name.

You can locate one Bolixo user using the search dialog. It connects to the /- document_clickable_link("https://bolixo.org","bolixo.org directory."); Do a search and just click on one userid in the result set. It will be added to the dialog above.

/-document_clickable_img ("/contact-request.jpg","40%",1);
<- 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 are 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.

Reply or Private reply
It fills the recipients in the dialog with the author of the message. In groups, it does the same, but you are moved to the private inbox.
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.
Edit
For text messages, the content and the recipients are copied in the edit dialog. You can alter the message and resend it. You can delete the original message if needed.
Download
The message will be downloaded to your computer.
Open in tab
The message is presented in its own tab to the right. This is useful for viewing long message. The message stays visible while you browse other messages

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",section_msgformat);> 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 it, a new browser tab is open.
  • Few HTML tags are supported. All other will appear verbatim. 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. You can also embed an image from a Bolixo project: use _IMG=userid/project/image-name.
  • To embed a video, simply use _VIDEO=URL. Video may be taken in a Bolixo project like an image.
  • To embed a web page, like a YouTube video, use _IFRAME=URL. When embedding 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.
  • To reference one bolixo user, use _USER=userid.
  • To create a link to a bolixo document, use _DOC=userid/project/document-name.

Note that there are no practical limits for the size of a message.

When linking a document, or embedding an image or video, you may simply visit the Bolixo project, and using the contextual menu, you can copy the document. You just paste (ctrl-V) in the message and the proper link will be entered (_IMG, _VIDEO or _DOC). <- section("Sharing your inbox");> <- section("Adding members to your public group");> <- section("Projects",section_project);> Projects let you manage a collection of documents. In a project, you can

  • Create documents (including games).
  • Upload files such as images, audio, video, documents and games.
  • Create folders.

<- section("Operations");> <- section("Documents and folders creation");> When creating a new folder, you must provide a name. When creating a document or game, unless you provide a name, the document is assigned one. The assigned name is noname plus an extension. So for example, a chess game will be called noname.chs. If a document with that name exists, Bolixo will append a numeric suffix to make a valid new document name.

Note that Bolixo does not make use of the extension to manage the document. Here are the suggested extensions:

  • chs: chess game.
  • chk: checkers game.
  • doc: text document.
  • sud: sudoku game.
  • tic: tictactoe game.
  • txt: basic text.

You can rename the document using the contextual menu later if needed. <- section("File upload");> This allows you to copy a file from your computer to the current Bolixo folder. The file is copied with its original name. If a file with that name already exists in the Bolixo folder, a popup allows you to either select a new name for the uploaded file or overwrite it. <- section("Contextual menu");> The contextual menu holds the following options:

Copy
This takes a copy of the current document. It also copies to the clipboard a reference to the document. You can paste it into a message. It uses the tags _IMG, _VIDEO or _DOC. See the section /- tlmpdoc_link(section_msgformat,"Message format and appearance");
Paste
The menu shows the name of the document which will be inserted. If the document was copied in the Talk, the document name is bolixomessage.txt, bolixoimage.ext, bolixovideo.ext or bolixoaudio.ext. For media messages, the extension depends on the original extension of the file.
Delete
Remove the document or sub-folder from the folder.
Undelete
Undo the last delete operation. There is no time limit to recover an entry. You can un-delete multiple times. If there are no more entries to un-delete, the menu entry will be gray out. Un-delete operations are done in the reverse order. So if you have deleted file A and then B and you wish to recover file A, you will have to un-delete B and then A, then delete B.
Rename
You can change the name of a document.
Download
This copy the document to your computer.
Public preview
This option only shows in the public project. It shows if you click the list header (gray line) or on a sub-folder entry. See the preview help to learn more about this feature.
Preview help
It presents a help screen explaining the public preview concept.
Open in browser tab
The selected document will open in its own browser tab. This is useful for a document you use often. The document makes use of the larger display.

Note that some browsers may block this action. You just have to authorize the bolixo server.

<- section("Documents and games",section_documents);> <- section("Tictacto",section_tictacto);> <- section("Sudoku",section_sudoku);> The Sudoku game is a puzzle. You are presented with a grid made of 9 lines and 9 columns. Further, the grid is organized in 9 sub-grids. Each sub-grid is made of 3 lines and 3 columns. The grid has some visible and invisible numbers. You must guess the invisible ones. The following rules must be respected:

  • On every line, you will find all numbers from 1 to 9.
  • On every column, you will find all numbers from 1 to 9.
  • In every sub-grid, you will find all numbers from 1 to 9.

<- section("Operations");>

/- document_clickable_img ("/sudoku.jpg","40%",1);

Four buttons located at the top of the grid let you initialize a new puzzle.

On the left, you have a number selector. You click on the number you wish to place and then you click on one cell of the grid. If you are right, the number will appear in that cell displayed with your allocated color. If you are wrong, the number will show up in red. If you click again in that cell, the number is erased.

At the bottom of the grid, there is a color selector. There are six colors. Each player is allocated one color. You may select another one, just by clicking on one available color. Whenever a player solves a cell, the number is displayed using the player color. Further, the last cell solved by a player has a circle around the number.

The grid is updated in real time. If a player solves one cell, all players are seeing the result immediately without performing any refresh. <- section("Complex puzzles");> When solving complex puzzles, you may have to establish multiple steps hypothesis. You set the value of one cell in your head to see if it would unveil more information about the puzzle. This requires lots of concentration. The Bolixo Sudoku game comes to the rescue. You can record your guess in the game. Select a digit and click on a cell using the middle button of the mouse. Your guess will show up as a small digit on the lower part of the cell. Using this information, you can work your way in the grid, to see if you can solve one cell for real. If you click again using the middle button, the guessed value is erased.

  • You can guess as many cells as you want.
  • When you solve a cell, the guess in that cell is erased.
  • Cells you guessed are presented with your color.
  • Guessed cells are shown to other players in real time.

The Bolixo Sudoku is using the qqwing utility to generate new puzzles. More information may be found at /- document_clickable_link("http://qqwing.com","http://qqwing.com"); <- section("Checkers",section_checker);> Checkers is a two players board game. The board is either a 8 X 8 or 10 x 10 grid. Bolixo supports both. The grid is made of white and gray cells. Only the gray cells are used. At game start, each player has 12 coins for the 8 x 8 game or 20 coins for the 10 x 10 game. One player has the black coins and the other has the red ones.

You can read the rules on Wikipedia /- document_clickable_link("https://en.wikipedia.org/wiki/Draughts","here");

The rules enforced by the Bolixo version are:

  • Until a coin is turned into a king, it can only go forward. This applies to normal and capture moves (when you jump over an opponent coin).
  • King coins are not flying kings. The only difference between a normal coin and a king is that the king may go backward or forward. This applies to normal and capture moves.

<- section("Operations");>

/- document_clickable_img ("/checkers.jpg","40%",1);

You can initialize a new game using the 8 X 8 or 10 x 10 buttons.

You can enter your name in one of the two rectangles at the top of the screen. You just click on one rectangle and your login id will be displayed. There is one black and one red rectangles. One rectangle is highlighted to indicate who is playing.

The player owning the black coins starts the game. By default, the black coins are shown at the top. A large arrow on the left side of the grid allows you to flip the view. The view is only changed on your screen: other players/guests are not affected.

The game do not enforce who is playing. So you can play against yourself if you want. Several people can join and play as teams.

To move a coin, you click on it. A blue circle shows on top. All player will see the selected coin. You can un-select the coin by clicking on it again. After deselecting your coin, you can select another coin. After selecting a coin, you can click on a destination cell in the grid. If the move is valid, the coin will be moved there. If the move was a capture, the captured coin will disappear and your coin will continue to be selected. It means you can capture more coins. If you can't capture more coins (or do not want to), you must click on your coin to deselect it. It is now your opponent turn. <- section("Chess",section_chess);> Chess is a two players board game. The grid is made of white and gray cells. One player has the black pieces and the other has the white ones.

You can read the rules on Wikipedia /- document_clickable_link("https://en.wikipedia.org/wiki/chess","here");

<- section("Operations");>

/- document_clickable_img ("/chess.jpg","40%",1);

You can initialize a new game using the Restart button.

You can enter your name in one of the two rectangles at the top of the screen. You just click on one rectangle and your login id will be displayed. There is one rectangle for white pieces and another for black pieces. One rectangle is highlighted to indicate who is playing.

The player owning the white pieces starts the game. By default, the black pieces are shown at the top. A large arrow on the left side of the grid allows you to flip the view. The view is only changed on your screen: other players/guests are not affected.

The game do not enforce who is playing. So you can play against yourself if you want. Several people can join and play as teams.

To move a piece, you click on it. A blue circle shows on the left. All player will see the selected piece. You can un-select the piece by clicking on it again. After deselecting your piece, you can select another piece. After selecting a piece, you can click on a destination cell in the grid. If the move is valid, the piece will be moved there. If the move was a capture, the captured piece will disappear and your piece will take its place.

The last piece moved by each player is identified with a black circle.

The Undo button on the top right lets you undo any move. All moves are recorded so you can return to the game start. <- section("Check and checkmate");> When your king is under immediate attack by one or more opponent pieces, it is said to be in check. This may happen in two ways. The first way is a direct consequence of the opponent move. The second is illegal. It happens when your own move would expose your king to a direct attack. In that case, the error will be signaled and the move won't be allowed.

In both cases, Bolixo will mark the opponent pieces which represent a direct threat to your king. The mark is a red circle on the right side of the piece.

If your king is in check and every possible move ends up with your king being exposed to a direct attack, you have lost. This is called checkmate. On the other hand, if your king is not in check, but every possible move ends up with your king being exposed, this is a draw. This is called stalemate. <- section("Photo Gallery",section_photos);> A photo gallery is a document used to organize images and photos. It presents images taken from the same Bolixo project or from the web in the order you want. You can write a caption for each image.

/- document_clickable_img ("/photos-example.jpg","40%",1);

<- section("Presentation");>

/- document_clickable_img ("/photos-example.jpg","40%",1);

The application has a menu bar on top, a larger version of the selected image, the caption related to this image and a list of images. Images may be selected either by using the keyboard (left right keys) or the mouse. A scroll bar shows up if there are too many images.

On the right, you have the mini-photos of people connected to the document.

There is also a chat area at the bottom. You can chat with people accessing this document. <- section("Menu bar");> /- PHOTOS_MENU menu(specs);

/- document_clickable_img ("/photos-menu.jpg","20%",1);

/- button (menu.svg_config,"Configuration and image selection");
A form pops up. It contains a text area. Just enter the images you would like to display. Enter one image per line. Images must be taken either from the same project as this document or from the web. For web image, enter a complete URL such as https://some-web-site.com/some-image.

Images taken from the project must be specified either relative to the folder holding this document, or absolute. The name of the project must not be specified. So if the photo gallery document is located in the sub-folder images of the public project, here are the possibilities

  • /image.png refers to an image in the main folder of the public project.
  • image.png refers to an image in the sub-folder images of the public project.
  • /images/image.png refers to the same image as above.
  • / refers to all images in the main folder.
  • /images refers to all images in the images sub-folder.
  • . (Just a dot) refers to all images in the same sub-folder as the document. Same as /images above.

When entering a folder (ex: / . /folder), the images are extracted and replace the folder line. If you already had entered one image before the folder, it won't be repeated.

The images will be presented in the same order as they are entered. Using a text area is handy because it allows you to quickly reorganize the list. As an example, you can cut a few images and paste them elsewhere in the list.

/- button (menu.svg_txtedit,"Edit the displayed image caption");
Select the image. Use this button and a form pops up. Just enter some text and submit.
<- section("Spreadsheet",section_calc);> <- section("Video conference",section_vidconf);> Video conference are usually events. In Bolixo, a video conference is a location. Just create a video conference document in a project somewhere and you now have a permanent place to gather and exchange.

The video conference is currently a prototype. It is suitable for 2 users at once. Just ask another user open the document with you and there you go. <- section("WhiteBoard",section_whiteboard);> A white board is a drawing space used to express ideas using enumerations and graphs. White boards are often used during meetings. Drawings are created while people are attending. Several people are often contributing to the drawing. The goal is not to produce a drawing suitable for marketing, but to make sure everyone understands the project.

The Bolixo white board has the following goals:

  • It must be very efficient. People are generally drawing while talking.
  • Drawings must be clear and simple.
  • Most operations must be done without following complex menus.

/- document_clickable_img ("/whiteboard-example.jpg","40%",1);

<- section("Presentation");>

/- document_clickable_img ("/whiteboard.jpg","40%",1);

The application has a menu bar on top and a square drawing area. The document is made of 4x4 drawing areas. You can move between areas using the pageup/pagedown or shift-pageup/pagedown keys. You can also move using the arrow keys.

The drawing area is a square even if the screen would allow for a larger area. This is so because the drawing is shared by multiple users at once, each one having a different screen resolution and aspect ratio.

On the right, you have the mini-photos of people connected to the document. The drawing is made of graphical elements (circles, rectangles,...) connected in graphs. Each element may be in the following states:

  • Not selected. It appears with a black outline.
  • Selected. It has a red outline. Many elements may be selected at once. Operations made on selected elements are done for all selected elements: resizing, moving, styling, connecting to parent elements, writing caption and deleting.
  • Selected as parents. It has a yellow outline. Many elements may be selected as parents at once. Selected elements (red) may be connected/disconnected to selected parent (yellow) elements.
  • Selected as a boxing parent. It has a green outline. Only one element may be selected as a boxing parent. All element added while a boxing parent is selected are associated with it. This is a convenience only. Added elements may be moved independently, including outside the boxing parent, but are moved together when the boxing parent is moved.

There is also a chat area at the bottom. You can chat with people accessing this document. <- section("Menu bar");> /- WHITEBOARD_MENU menu(specs);

/- document_clickable_img ("/whiteboard-menu.jpg","40%",1);

/- button (menu.svg_clear,"Erase board");
Erase the current drawing. A popup dialog ask for confirmation. You can erase the current board or all boards
/- button (menu.svg_text,"Insert a text element");
A bullet will appear on the board. You can type some text immediately. You can move the text element by clicking either on the bullet or the text.
/- buttons ({&menu.svg_ellipse,&menu.svg_rect},"Insert a circular element");
A circle (square) will appear, already selected (red) on the board. You can immediately move it, resize it, type some text. Note that circular elements are ellipses. Using the mouse wheel combined with the control or shift key, you can resize horizontally or vertically. If a parent element was selected (yellow), the circle is immediately connected. You can use the middle mouse button to change the line type.
/- button (menu.svg_line,"Insert a line");
A short line will appear on the board, already selected. You can move it, resize it, or add some text. Lines are resized using the left mouse button combined with the control or shift key. The control key lets you move the start of the line, while the shift key lets you move the end of the line. Without those two keys, the line is simply moved.
/- button (menu.svg_select,"General selection mode");
This is covered in the /- tlmpdoc_link(section_whiteboard_operations,"operations"); section of this document.
/- button (menu.svg_star,"Parent selection mode");
You can select one or more parent elements. Selected elements are shown with a yellow outline. To deselect an element, just select it again. Note that you can do the same operation by selecting elements in the general selection mode while holding the control key.
/- button (menu.svg_parent,"Boxing parent selection mode");
You can select one boxing element. Its outline will become green. When inserting new elements, they will be tied to this element. When you move this element, the sub-elements follow. Sub-elements may be moved independently and may lie outside of this element. Note that you can do the same operation by selecting the element in general selection mode while holding the shift and control key.
<- section("Menu bar, styling");> /- WHITEBOARD_MENU menu(specs);
/- document_clickable_img ("/whiteboard-menu.jpg","40%",1);

/- button (menu.svg_dashrect,"Select the outline of an element");
Click on this button to change the outline of the selected (red) elements.
/- button (menu.svg_linetype,"Select the line type");
Click on this button to change the line type connecting elements to their parents. Several elements may be selected (red) and several parents may be selected (yellow). You can achieve the same effect using the middle mouse button.
/- button (menu.svg_textpos,"Select the position of an element text");
You can move the text of an element in five position: inside, top, left, right, or bottom. You can do the same operation by clicking the middle mouse button while holding the control key.
/- buttons ({&menu.svg_inctextsize,&menu.svg_dectextsize},"Increase/Decrease text size");
These buttons are used to increase or decrease the size of text on the board. If there are selected elements (orange), then only those elements are affected. If there are no selected elements, then all elements are affected: you are changing the default text size of the document. New elements will inherit this text size.

You just have to click repeatedly on those buttons to get the proper text size.

/- button (menu.svg_image,"Assign an image to an element");
You must select at least one element to use this button. A dialog pops up. You enter the name of the image from the same project as the board. Or you can enter a complete URL to use an image from the Internet (ex: https://some-site.com/image.jpg). The image will show up in all selected elements. You can move and resize the elements and the image will be adapted.
/- button (menu.svg_imbed,"Link a document inside an element");
You must select at least one rectangle element to use this button. A dialog pops up. You enter the name of a document or game from the same project as the board. You must also enter a region representing an area of the document. This is optional. For example, to display a part of a spreadsheet, you can enter the region a1:d4.

The document will appear in the selected elements. You can move and resize the elements and the documents will be adapted.

Note that documents are actually linked inside the whiteboard elements. If someone changes the content, the modifications will show instantly.

/- button (menu.svg_grid,"Enable/Disable grid mode");
When you click on this button, you cycle through no grid, a fine grid and a coarse grid. Grid mode allows for more precise element disposition. When you move an element, its center jumps from one point of the grid to the next. You can't go in between. The same applies when you size an element. The size augment using fixed increments. This becomes easier to place elements on the same line or same column and the same size.
/- button (menu.svg_delitems,"Delete selected elements");
<- section("Operations",section_whiteboard_operations);> /- DOC_BUTTON_SPECS small = specs; /- small.width = small.width*3/4; /- small.margin_top = small.margin_bottom = small.margin_left = 0; /- WHITEBOARD_MENU menu(small);
/- document_clickable_img ("/whiteboard.jpg","40%",1);

A drawing is made of the following elements:

  • Graphical elements such as circles, ellipses, rectangles, and lines.
  • Text (bullets).
  • Lines connecting parent elements to sub-elements.

We start by placing graphical elements using the menu bar. Once an element is placed on the board, it is highlighted with a red outline. At this point, you can operate on the element. You may also click on an element to select it. You can shift click on an element to select it while keeping other selections.

Change the size.
Use the mouse wheel to enlarge the element. Use the mouse wheel while pressing the shift key to change the height of the element. Use the control key to change the width.
You can also change the size by fixed increments using the TAB and shift-TAB keys. The TAB key move text bullets to the right.
Add some text to the element.
Just type and the text will show inside the element. Edition is limited. Use the backspace key to remove the last character.
Move the element.
Just click on it using the left mouse button and move it on the board. If you have selected the element using the shift key, you can move all selected elements together by keeping the shift key active.
Connect the element to another element, forming a graph.
If one or more parent elements have been selected, clicking the middle mouse button (the wheel) will connect the element to the parents. You can click again to change the line type. After you reach the last line type, the line will be removed. So you use this to connect and disconnect the selected element from the graph and to pick the line type. You can perform the same action using the /- htmlout(menu.svg_linetype); button on the button bar.
Move the text.
You can place the element text inside or around the element. By clicking the middle mouse button while pressing the control key, you move the text inside, on top, to the left, to the right or below the element. You can perform the same action using the /- htmlout(menu.svg_textpos); button on the button bar.
Delete the element.
Just hit shift delete on the keyboard. You can perform the same action using the /- htmlout(menu.svg_delitems); button on the button bar.
Duplicate the element.
Just hit Enter and a copy of this element will appear below. The current element will be deselected and the new one will be selected. You will start to interact with the new element immediately. If you hold the shift key, the new element will appear to the right instead of below.

When adding a new element, either using the menu bar or duplication, if one or more parent elements are selected, a line will be created between parents and the new element. <- 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
  • httpd
  • liberation-sans-fonts dejavu-sans-fonts
  • 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.bolixo.org/repos/solucorp .

Package nameSources
blackholehttps://solucorp.bolixo.org/repos/solucorp/blackhole/trunk
bolixohttps://solucorp.bolixo.org/repos/solucorp/bolixo/trunk
tlmphttps://solucorp.bolixo.org/repos/solucorp/tlmp/trunk
tlmpsqlhttps://solucorp.bolixo.org/repos/solucorp/tlmpsql/trunk
tlmpwebhttps://solucorp.bolixo.org/repos/solucorp/tlmpweb/trunk
trlitoolhttps://solucorp.bolixo.org/repos/solucorp/trlitool/trunk
<- section("Installation steps");>

  • Install the bolixo packages.
<- 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.

}