\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");
}
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");
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)));
}
So what can you do on Bolixo ?
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){
/- 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.
The second is a larger photo.
/- 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.
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
While doing so, you may want to subscribe to two interesting accounts:
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:
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.
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.
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.
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.
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.
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:
When you enable public view and the public folder field is set to "none", your public page displays:
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:
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:
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).
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.
You do not need any permission to track the public messages of someone. If you
see this
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
The screen is split in three areas or panels.
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.
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.
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.
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.
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
.
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:
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:
You can send requests or questions at info at bolixo.org.
<- section("Terms of use");>
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.
Bolixo.org reserves the right to remove any content deemed offending.
Bolixo.org was created to deliver a social media site respecting privacy.
->
->
(You are currently not logged, so the buttons have no effect)
/- }else{
(This one has no effect)
/- }
Here are the steps:
/- DIV d;
->
<- 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.
/- htmlprintf ("https://%s/public/%s
\n",glocal.host,glocal.username);
/- d.end();
/- jump_config_account();
, it means the persons does not have a public page.
/- jump_config_interests();
The public page is
/- document_clickable_link("https://alpha.bolixo.org/public/bolixonews","https://alpha.bolixo.org/public/bolixonews");
.
The public page is
/- document_clickable_link("https://alpha.bolixo.org/public/bolixodev","https://alpha.bolixo.org/public/bolixodev");
.
/- string url = string_f("https://%s/public/%s",glocal.host,glocal.username);
/- document_clickable_link(url,url);
/- }
->
<- section("Digital signature");>
(You can find an explanation about digital signature
/- document_clickable_link("https://en.wikipedia.org/wiki/Digital_signature","here on Wikipedia");
<- pre();>
/- htmlprintf ("bofs cp https://%s/projects/%s/public /tmp/public
\n",glocal.host,glocal.username);
->
<- 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);
->
<- 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);
->
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();
Tag Description Usage Example
<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> Subscript item<sub>1</sub> This is item1 and item2
<sup> Superscript 10<sup>2</sup> 10 exponent 2 is written 102
->
->
<- 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.
Usage of your personal information
Publicity on this site
Offending material
About bolixo.org