Comments (6)
@mgautierfr feedback?
from libkiwix.
I do not see any pc file. See OlafvdSpek/ctemplate#15 (comment)
from libkiwix.
Possible replacement for ctpp2 could be :
- https://github.com/kainjow/Mustache a mustache template engine (header only), no dependency, C++11, boost license
- https://github.com/ipkn/crow a small microframework for web. It could replace cttp2 for templating (
crow::mustache
) and microhttpd. boost dependency, header only, C++11, BSD3 license.
from libkiwix.
@mgautierfr How much would you value the boost dependency? and the price of adding it?
from libkiwix.
I think that boost could be a real win globally.
It is pretty easy to install (most of boost library are header only and it is the closest things we have from a standard).
There is a number of libraries that could be use in kiwix or libzim projects :
- boost.filesystem to have os independent file manipulation.
- boost.locale to handle localisation.
- boost.process (header only) and boost.thread to create subprocess and threads os independently (for aria2, zimwriterfs, ...)
- boost.uuid to generate uuid. (header only)
- boost.asio to do io (header only)
- boost.beast to do http request (and server) (pretty low level API) (header only)
- boost.log to do some logging.
- boost.test for unit testing. (header only)
- boost.endian to handle endianess. (header only)
- boost.programOptions to read options from command line or configuration file.
Of course we do not have to move to all those libraries in the same time (nor at all). We must evaluate pros and cons of each libraries and change if it is usefull.
But, all those libraries would potentially remove ctpp2
, libmicrohttpd
, curl
, googletest
; remove a lot of code in kiwix-lib and libzim about threading, filesystem operation, uuid, endian ... allow us to add the logging and localization features.
To come back on the subject, I think we can move to a templating using mustache (kainjow/Mustache).
It adds no dependency and if we decide to move crow
after, the templating system is the same.
There is also this template system https://github.com/no1msd/mstch but it needs boost.
from libkiwix.
@kelson42 Without having studied in details like you, my overall feeling is that boost
is worth it now for the kiwix-lib
. Regarding the templating system, I trust you to find something performant, maintained & well used, portable and relatively simple (also the txt template "language").
That said I'm pretty much against moving out from libmicrohttpd with an all-in-one solution because:
- I'm in general against all-in-one approach
- It is a lot of work to remove libmicrohhtpd, without clear added value for the users
- We have currently other priorities
- I was already thinking adopting https://github.com/nghttp2 (from Aria2 Tatsuhiro) later next year.
from libkiwix.
Related Issues (20)
- sync releases with library users HOT 5
- Add IPV6 support HOT 2
- To import bookmarks in android we require the `library.xml` HOT 10
- Suggestions for improving Kiwix-server for blind people HOT 5
- βBlkβ language is not displayed properly in Kiwix Serve language filter HOT 7
- library.kiwix.org appears to have stopped updating HOT 1
- Release 14.0.0
- Edge case: kiwix-serve style & script injection fails if optional </head> tag is not present HOT 2
- Add download button in the preview of ZIMs in library.kiwix.org HOT 3
- Kiwix Server viewer βhomeβ button is most of he time not big enough HOT 1
- Remove `KIWIX_DATA_DIR` HOT 3
- `kiwix::getDataDirectory()` should be moved to `kiwix/kiwix-desktop` repository HOT 1
- Relax the Content-Security-Policy to allow `mailto:` links in the Kiwix Serve iframe HOT 2
- ZIM size advertized in library is in MB while users see a MiB value in many other places HOT 2
- Remove Multiple Languages filter
- `OPDSParser.parse` is always returning true HOT 8
- Allocation of icu transliterator in removeAccents on apple fails HOT 2
- ZIM Illustration is resized in the catalog UI and hence a bit blurry HOT 2
- Expose support for i18n/translation in the public C++ API HOT 2
- kiwix-serve raises 500 error on `Or` search term
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libkiwix.