I am a networking and C veteran and a could-be elixir/erlang programmer. I run 100+ small mediawikis on specific topics. Is/was there any attempt to develop an elixir clone I could use to start extending with new capacities? But first, would that be a good idea? I have a real need but not the PHP competences nor the wish to lock myself in an old non-functional programming context and a big framework like MediaWiki (I am tied by their page format with thousands of pages text). Years ago I started developing a QNX extension to that end. The architecture was interesting, but they kept the OS propriétary.
Thank you for the comments and suggestions.
Hi @jfc, and welcome to the forum.
I’m not aware of any wiki engines built in Elixir / Phoenix (after a brief search, but I’ve also been snooping around these forums for a while and think I would have noticed). The gitgud (GitGud, GitHub clone entirely written in Elixir) has wiki on the to-do list.
MediaWiki is a pretty big codebase so your pathway forward will depend on how you use it and the user base. Search the forums for CMS - you might get inspired by something that isn’t a wiki, but is close enough for what you need (e.g. https://changelog.com/posts/changelog-is-open-source or https://github.com/infinitered/thesis-phoenix).
Converting to/from MediaWiki markup format shouldn’t be too bad, so don’t let that hold you back. Pandoc (https://pandoc.org/) has all kinds of conversion options if you don’t want to code your own. It’s pretty fast too. I use it for quite a few documentation related things - e.g. I can write MS Word docs without using MS Word.
As it happens, John MacFarlane, who wrote pandoc, also wrote a Haskell based wiki - https://github.com/jgm/gitit
Hi! Mindok,
Thank you for the welcome, advice and tips! I will look right now into gitit! And your two links.
My basic simple idea is to consider that as “everything is interconnected” there is an “interligence” - interligent space (i.e. universal metanetwork) where everything has a format, a name/address, a way to work and exchange and there can be methods to make them interrelate in a concerted manner. (e.g. the DNS). The concept is to make each page/file a server with a set of presentation/capability parameters, shareable services, and a common search engine.
Hello, and welcome to this awesome community.
I am very, and I really mean it – VERY interested in your project. I am an archivist by soul and a senior programmer by profession. Jokes aside, I love programming. But I quite like information archiving in general.
Lately I am working on bringing in a more contemporary sqlite support to Elixir. There’s a good library but it doesn’t support Ecto 3 which is the upgraded and better version of Ecto 2, which is a data mapper library, or an ORM if you will. Since Elixir is dynamically typed (still strongly typed but not checked at compile time) I’m also pondering adding a stricter typing to my library to make things a bit safer in general. Especially if you keep in mind that sqlite is weakly, or rather, value-typed, and not as strict as Postgres.
Where I am getting with this is that I very much would like to author a Wiki-like software in Elixir, backed by Ecto – which in combination with my other effort, will open it up for being backed by sqlite as well (not only by Postgres and MySQL which are the best supported DB backends for Ecto).
I happen to believe Wikis are way too huge and bloated software packages in general and I’m seeking to bring Elixir’s speed to this area (I mean, it’s not the speediest language but it’s definitely beating Ruby, Python and PHP, and sometimes JS). Fault tolerance and transparent parallelism, too. Elixir is also quite lightweight.
Between Elixir’s releases (self-contained packages) and sqlite (serverless DB) I think Wikis can be made very lean and mean. I’d love working on that.
Dimitar,
This is great! My interest is in what I name “humanumerism”, i.e. the way people can take advantage of new tech in the today life.
I started with that idea and the need for an intl network to support the first people and small corps being able to be interested in … 1977. I selected Tymnet to work with (other four I knew off were US ARPANET and French Gov Cyclades, and French Transpac and US Telenet). Tymnet was the only one thinking deep networking (inter processus).
We made it 100% of the public packet switch international services before we were purchased and reduced to the Internet by McDonnell Douglas. My own job was “extended services”, i.e. “the layers above” the 7 OSI layers (in network data processing) while TCP/IP was only 4 lower layers. So I left and tried to build a functional architecture transparent to lower layers in extending QNX. This was very promising but it required dedicated (proprietary) QNX machines.
So I worked (some in the IETF would call it fought) on standardization precautionary concepts to keep the layers above (language, semantic, etc.) independent. In the process I used wikis to document things. More and more wikis as it became clear that the need is for an inter process and human interdisciplinary ontology and a replacement for the concept of only one version "document.” I name it the concept “perligent” (a Cicero’s idea), not the document the author sends, but what the destiny receives, after many may have (directly, indirectly, in parallel) contributed to. Like one does when composing an RFC.
I started publishing one per topic of interest of mine. I named it a “blik” (bliki, book in line, a can of data in Danish/German) and I have 00s I need to sort :-). I focused on the needs I have and anyone working home/independently/in groups may have. You are right: SQLite to be portable, using smart pages, each being independent in the person’s or community’s neb (private nebularity with a gateway on the web). From my QNX days, I know that Erlang/elixir IS the right solution for people (I do not need big power) with a good DNS like (IETF calls it DDDS), a simple accepted (set of) page formats. etc.
I happen to be in Montpellier, France, where there is a university lab which works on smart archiving issues, interdisciplinarity, etc. and the action you do when you write, read what you wrote, formated on the screen, adapt it and mark-it up simultaneously. I am a member of the national archivist’s association.
My idea is to build an entire personal environment to write, read, archive, work, manage, publish, administer, live with it, etc. for a person/couple/family/home/small business under beam. So it can be installed and run the same everywhere. I know it is a huge task. I also know that you cannot succeed it with non-functional architecture. The question is: is it feasible? Technically, and in the open source? I learned a few things in my life, I try to build a team to learn “erlix” (http://erlix.fr), tried to set-up a meet-up to jointly train… Did not rise interest enough, yet! I am trying my last bet: a $10 LLC "senior entreprise,” next week.
Dimitar,
Just an addition. I built the site “http://blik.tf” as a master for building my bliks. Click on the “-” in the middle of the last line of the first page to get at the technical scripts.
Would you accept a personal message?
certainly! Please use jfc@blik.tf. Sorry for the delay, I was not home and created it to be blik+ specific.
no news from you? Would you have a problem with my mail address?
No problems, except juggling 10 apples with 2 hands.
I’ll be in touch this week!
Hi ,
Can I chime in?
I’m learning Elixir right now and I’m in love with the language. It would be great to contribute to some project, and doing WIKI from start seems like a great idea.
I have >10yrs experience in C++ (various industries, mainly telecom and finance). So not exactly a junior, although Elixir is like a breath of fresh air to me.
Do you think I can help with the project ?
Sorry for the delay in reading this. I entered “MediaWiki elixir” in Google and this popped first! If you still interested my current conclusion (but I have not started yet learning elixir, as I do not have inputs about it able to fit the job) is to develop an “intellipage manager” that can embody and capability protect wikitext pages, blobs, mail, json entries, etc. and an “intellipage user agent” able to correlate, use, massage send, receive and display them.
The key issue would probably be to be wikitext (mediawiki text editor compatible due to the huge “installed” compendium).
has anything come out of this thread? mediawiki feels sort of trapped in the whirlwind that is wikipedia. I don’t mean it in a negative way, the exact opposite. wikipedia is at the very top of impactful open source and collaborative projects. but that success and responsibility does not translate into an equally ground-breaking impact with mediawiki itself as a decentralized knowledge management platform. while used quite a bit in commercial and non-commercial context, it feels stagnant as a conceptual platform that can bring the next phase. there are some interesting efforts built on top (wikibase, semantic mediawiki) but for whatever reason they didn’t gain much traction for almost a decade now.
I don’ know if elixir’s features and strong points could make a difference in the direction of the reinventing the wiki paradigm in the ML/AI era. In some ways Python might have an edge (easy interfacing with its extensive library ecosystem the obvious one) but there is no signature wiki project in the Python space either…
Nothing directly came out of this thread yet, but the topic went a step further with GPTs I see as a proof of concept.
Here is my rationale: we start deploying public (was monopoly times) international packet switch services in 1977. We being Tymnet International, the public network by/of Tymshare. From then on I considered the diktyo(net)digital empowerment of the person and started in 1985 Tymnet Extended Services (meaning above basic, value-added and enhanced services). That the destination might receive more information (collateral or generative) than sent by the origin. This was premature and politically blocked (Tymshare had been purchaed by McDD) by the internet. So I proceeded independently (citizen research). Among others things, I identified the need of a capacity based multiactor message passing environment. So I extended QNX, but their license blocked it. Also, I started a project to support on-line city communities. This was also premature, but it taught me that the advisable personal IA xitizen station where I could enter, maintain, collect ideas - independantly and in community - was a wiki-mailing-list tandem + IA related tools (home and on-line). And that after the gesture, speaking, scripting and printing we see, hear, and read we had reached the time when the “we” of us debates what the others bring.
So my idea is the need for a “wixi, as an intelligence eXtended wiki”. I have tested for years the UX of my own mediawiki farm and IETF like mail exchange based communities. I identify beam as a portable multi-OS context to build the environment I need : i.e. a message passing inter-virtual-host environment supporting a wiki/mail/chat user in a community context. But I feel that it might be a step deeper than elixir : a polylog between functional hosts within a data ocean and streams ?