linuxmint / mdm Goto Github PK
View Code? Open in Web Editor NEWThe MDM Display Manager
License: GNU General Public License v2.0
The MDM Display Manager
License: GNU General Public License v2.0
MDM - MDM DISPLAY MANAGER The MDM Display Manager (MDM) is a display manager that implements all significant features required for managing local displays. Documentation: yelp ghelp:mdm Contact: #linuxmint-dev on irc.spotchat.org
Done in most DM already, here are the changes in GDM:
The program "New login in a Window" in the system tools sub-menu is not working under LMDE 201204 MATE.
This program maps to /usr/share/mdm/applications "mdmflexiserver-xnest.desktop".
Corresponding commandline command is "mdmflexiserver -n" or "mdmflexiserver --xnest"
Running mdmflexiserver with the Debug option "-d" results in an error message "Binary not found".
Root cause of this issue are missing references to the Xnest server in the files "/usr/share/mdm/applications/mdmflexiserver-xnest.desktop" and "/usr/share/mdm/defaults.conf":
Note: The problem might be partly already solved by commit ba5752f; c.f. also issue #1
Hi everybody!
I would like MDM to preselect the last user who logged in, so that normally you only have to type in the password and press "Enter".
Probably 95% of the Mint desktops are single user computers. For these 95% it would be very useful, not always having to type in the user name first, then ENTER, then password, then ENTER.
Therefore I propose to preselect the last user logged in. The cursor should start in the password field, so can type in directly the password and start your mate/cinnamon session quicker.
The option should be enabled by default, as it would be helpful to most of the users. It should be added to the settings menu too, as I might imagine, that in some surroundings you don't want this, e.g. work stations in a library, where you want a blank login screen instead.
There should be a way to disable the setting in the "Login Window Preferences", probably in the tab "Security", before "Enable Automatic Login". The new option could be called "Remember last user logged in".
This would be great! Thanks a lot for MDM and the whole Mint project :-)
Spectas
I installed it on LMDE (new mdm 1.1.6) and there is no users list or images like there is is nadia, I tried a few things to try it get it show in lmde but no luck so far so I thought I better put it down as a bug in case.
samriggs
Never mind I finally got it working, all is good. I'll add what I did in the mdm thread for others
Self explanatory. I couldn't find any theme which changed the background/font of these dialog boxes.
We have several user accounts on one system (Linux Mint 13 RC MATE edition). All of the user accounts are password protected.
If two different users login, and one of them logs out, then the second user account is automatically activated without asking for the password.
Normally you would expect to return to MDM, but that is not the case.
On single user systems no problem, but on multiseat systems ubuntu mdm presets user root at the greeter.
In the logs:
mdm_verify_user : presetting user to "root"
Only a password box is shown
In mdm 1.25 no problems at all, just in the newer mdm
how to disable this?
Hi.
I have a laptop (HP Pavilion DM4) with:
And when it finished the installation. And the laptop run for first time, the MDM don't show anything, the screen is in black.
But if I try to connect to external monitor and reboot, I can see in the second monitor the MDM but the in laptop keep in black.
Bye, thanks.
Linux Mint Petra Cinnamon
mdm 1.4.7+petra
Mint-X login screen
When there is a user account without a password along with others using passwords, the account without a password can take over the login process and prevent logging in to the other accounts.
In the login screen, if you click on or scroll to the account which has no password set, you log in instantly to that account. The problem comes in when you log out or restart the computer. Since mdm automatically selects the last user upon return to the login screen, you are instantly logged right back in to the account with no password.
A partial quick fix is to kill mdm, log in as an administrator and uncheck the "Automatically select the last logged in user" entry in the Login Window Preferences.
This, however does not fix a related problem where you are logged in to the passwordless account if you try to scroll through the list of user accounts in the login screen. As soon as you hit the account without the password, you are logged in without the opportunity to scroll past to another account.
A code review is needed on all use of gdk_trap_error_pop().
gdk_flush() or Xsync, or gdk_display_sync should always be called prior to it.
I had the same problem and frequently I got a black screen when I was booting mdm.
Those all problems were disappeared by typing the following command just after the installation of nvidia :
( solution found at LinuxMint forum
http://forums.linuxmint.com/viewtopic.php?p=511446&sid=e5626daefe8dfdf32489cb73466b5e96#p511446)
dpkg-reconfigure nvidia-kernel-dkms
carte nvidia GTS 250 (Rev a2) - MLDE up4 (kernel 3.2.0-2-amd64)
Hi everybody!
I would like MDM to move the cursor for the next text input field, when pressing the TAB key on the keyboard.
In most login windows, you can either use the keys ENTER or TAB to change from one text input field ("user name") to the next one ("password").
But I have the impression, MDM reacts to the TAB key like a web browser: navigating with the TAB key in a web browser works somehow, but it's no fun. MDM does the same. When you use the TAB key it moves the cursor to the next "element" on the screen, which might be (probably depending on the MDM theme) a picture. But this is senseless, as you never want to navigate through all elements in the MDM screen, but just want to move from one text input field to the next one.
Kind regards!
Spectas
I suggest a new bootsplash for Linux Mint that integrates with MDM
1- At startup loads the many colours:
Then the last colour it loads is that of the MDM login screen background or MDM clones plymouth color if possible!THus we don't get a black background between the two!
2- At shutdown it loads only one background colour as follows:
Hi,
MDM seems to default to the primary language of the system, which seems to be a sane default. However, when a user selects a different language and logs in, it should offer to remember and always login with that language, just as it does for the default session (a dialog box that says "Do you want to make XXX the default session or just once?").
Thanks a lot!
I think it would be nice to have a way to pre-select a specific user so that one has only to type in the password. Possibly the last logged in user.
What do you think?
Steps to reproduce:
When I play a movie in Totem 3.4.3 full screen, pause it, the screensaver locks the screen.
But Totem stays on top, as I move my mouse, keyboard and mouse functions are towards the screen unlock while the movie is still visible.
So; full screen movie, screensaver, move mouse, movie still visible, type in password, press enter: screenlock is unlocked without visual confirmation.
In mdm 1.4.6+petra, if the specified HTMLTheme is not installed mdm displays an error message that the theme could not be loaded and then a black screen with nothing.
This prevents the user logging in at all.
The behaviour if the theme cannot be found should be to fallback to a default GTK theme of some sort which will still allow the user to login.
I'm using a laptop with two external screens attached, and inside Mint I disabled the laptop screen (because it's always closed) and use just the external screens.
Mint properly honors the ~/.config/monitors.xml configuration, but mdmlogin does not. In particular, the setting that defines the primary screen is important (in my case), because that's the screen I need the login prompt on.
So far mdmlogin doesn't show anything on my primary screen (left-most), and thus the login prompt is always hidden, requiring me to type my user/pass blindly.
mdmlogin should honor the monitors.xml config file (imo).
I'm seeing a problem with the login screen appearing for a second and then going to a blank screen during a normal boot/reboot. This happened every boot/reboot after the first set of updates for Maya RC but after the last set of updates I'm getting this on a random but still frequent basis. I end up having to Ctrl+Alt+F1 to a prompt, login and then typing...
sudo service mdm restart
...in order to get back to the login screen. In short, MDM keeps crashing(?) on me during a boot or reboot and I have to restart it. Logging out and logging back in works fine. I haven't found anything in the logs yet but I'm still looking. Here's my system specs:
Intel Core2 Quad, 8.0 GB DDR2, 1.0 TB HDD, Nvidia GT 430 w/1.0 GB DDR3 (running Nvida 295 driver)
Never had a problem with LightDM or GDM in the past. Not sure if this is a kernel problem or just a matter of timing. If there's a specific log I need to look at, please let me know. I'll post any needed log entires here.
This is the same bug and fix described here:
Debian #647230 gdm: language chooser uses wrong locale (UTF-8 vs utf8) http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=647230
Installed Linux Mint 14 MATE 32 bit using English.
Added the French language and applied system wide changes.
Created a new user
Logged out
Tried to choose French in the language menu
Logged in then:
Language fr_FR.UTF-8 does not exist; using System default
I applied the same fix as described above by patching /etc/mdm/locale.conf
-French(France) fr_FR.UTF-8
+French(France) fr_FR.utf8
I restarted mdm and was good to go.
Currently there's no way to control whether or not sound is enabled (or have this status displayed) from the mdm login screen. This is problematic on laptops, where logging in in a quiet place and realizing you've left sound on leaves you at the mercy of the login chimes.
my mdm 1.2.5 html theams (mdm) does not show account image at the login screen.
I think
picture.setAttribute('src', "file:///home/"+username+"/.face");
not work properly.
I set .face as a custom picture but it is not display in login screen.
how to display my custom account image in login screen (left side image box above user name)?
On LMDE 201204 MATE, with MDM replacing GDM3, gnome-screensaver is missing the switch user button at the password prompt when unlocking the screen.
This is because gnome-screensaver will only show the button if /usr/bin/gdmflexiserver exists. An easy fix is to have a symlink for /usr/bin/gdmflexiserver that points to /usr/bin/mdmflexiserver. I propose adding the symlink as part of the install process.
/usr/bin/gnome-autogen.sh
configure.ac:459: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2590: _AC_COMPILE_IFELSE is expanded from...
../../lib/autoconf/general.m4:2606: AC_COMPILE_IFELSE is expanded from...
configure.ac:459: the top level
configure.ac:459: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2590: _AC_COMPILE_IFELSE is expanded from...
../../lib/autoconf/general.m4:2606: AC_COMPILE_IFELSE is expanded from...
../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
../../lib/autoconf/headers.m4:129: _AC_CHECK_HEADER_MONGREL is expanded from...
../../lib/autoconf/headers.m4:67: AC_CHECK_HEADER is expanded from...
../../lib/m4sugar/m4sh.m4:607: AS_FOR is expanded from...
../../lib/autoconf/headers.m4:249: AC_CHECK_HEADERS is expanded from...
../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
../../lib/autoconf/general.m4:2590: _AC_COMPILE_IFELSE is expanded from...
../../lib/autoconf/general.m4:2606: AC_COMPILE_IFELSE is expanded from...
configure.ac:459: the top level
checking for autoconf >= 2.53...
testing autoconf2.50... not found.
testing autoconf... found 2.69
using automake for automake
checking for libtool >= 1.4.3...
testing libtoolize... found 2.4.2
checking for glib-gettext >= 2.2.0...
testing glib-gettextize... found 2.34.3
checking for intltool >= 0.25...
testing intltoolize... found 0.50.2
checking for pkg-config >= 0.14.0...
testing pkg-config... found 0.28
checking for gnome-doc-utils >= 0.4.2...
testing gnome-doc-prepare... found 0.20.10
checking for gnome-common >= 2.3.0...
testing gnome-doc-common... found 3.6.0
Checking for required M4 macros...
Checking for forbidden M4 macros...
Processing ./configure.ac
Running libtoolize...
libtoolize: putting auxiliary files in `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
Running glib-gettextize... Ignore non-fatal messages.
Copying file mkinstalldirs
Copying file po/Makefile.in.in
Please add the files
codeset.m4 gettext.m4 glibc21.m4 iconv.m4 isc-posix.m4 lcmessage.m4
progtest.m4
from the /usr/share/aclocal directory to your autoconf macro directory
or directly to your aclocal.m4 file.
You will also need config.guess and config.sub, which you can get from
ftp://ftp.gnu.org/pub/gnu/config/.
Running intltoolize...
Running gnome-doc-common...
Running gnome-doc-prepare...
You should update your 'aclocal.m4' by running aclocal.
Putting files in AC_CONFIG_MACRO_DIR, 'm4'.
Running aclocal...
configure.ac:4: error: 'AM_CONFIG_HEADER': this macro is obsolete.
You should use the 'AC_CONFIG_HEADERS' macro instead.
/usr/share/aclocal-1.13/obsolete-err.m4:12: AM_CONFIG_HEADER is expanded from...
configure.ac:4: the top level
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: error: echo failed with exit status: 1
ArchLinux 64 bits
gnome-common-3.6.0-1
dmxproto-2.3.1-2
libart-lgpl-2.3.21-2
libdmx-1.1.2-1
libgnomecanvas-2.30.3-2
automake-1.13.1
gcc-4.7.2
systemd 194, NO consolekit
not sure what other info give to you
Yes I'm try to maintain this package for archlinux, I'm the AUR maintainer
Cinnamon 1.8.2
"Full Moon" theme (samriggs)
When I try to logout the icon/gtk theme changes to GNOME default, but doesn't logout.
Hello,
Yesturday, I changed GDM3 by MDM on my LMDE 64bits with Cinnamon.
Now I need to wait 3 times longer than before for the desktop to appear when I push enter after typing my password.
The wait is probably 13/15 seconds with a black screen. It's very long.
When the desktop appears everything is launched : sound, Wifi...
Maybe you should allow the desktop to appear faster and finished the launch of services at that moment (like Wifi...)
Thanks ;)
hello,
as stated here (french) and here there seems to be an issue in the keyboard layout in MDM (and GDM) depending on some hardware configuration.
I want to be able to use my swiss french layout but it only provides me the US qwerty.
I have:
I mention the keyboard as it seems that the issue was not there with my old USB keyboard.
I am willing to help testing if it does not break completely my setup (don't want to reinstall).
Should you need more information on my setup, don't hesitate to contact me.
EDIT:
I forgot to mention that except MDM (or GDM) the layout is the expected swiss french (console, after login...)
magnus
on 1.2.5/Olivia.
Even if names are translated, date is shown as month/day instead of day/month.
Hi all,
I'm research for the best way to build the package and upload to debian.
FYI, debian already have a package called mdm in the repository that is not this display manager.
Can will this package renamed in a future?
See debian bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=707017
on multiseat systems mdm presets user to root in greeter.
No username box is shown.Only the password box.
mdm verify_user : presetting user to "root"
In stand alone system no problem.
Mdm 1.25 has not this issue.
How to disable this
msgid "Op_tions" at #: ../gui/greeter/greeter_parser.c:379 is incorrectly translated as "_Beállítások", meaning 'Settings', which is OK for 'Select Language' or Select Session but not for Restart, Shut Down or Suspend. Here is a patch to replace Beállítások with Műveletek 'Actions':
--- mdm-1.0.8+nadia/po/hu.po.orig 2012-11-27 14:49:09.000000000 +0100
+++ mdm-1.0.8+nadia/po/hu.po 2012-12-06 21:00:22.000000000 +0100
@@ -11,4 +11,5 @@
+# Ariszló [email protected], 2012.
msgid ""
msgstr ""
@@ -4725,5 +4726,5 @@
#: ../gui/greeter/greeter_parser.c:379
msgid "Op_tions"
-msgstr "_Beállítások"
+msgstr "_Műveletek"
#: ../gui/greeter/greeter_parser.c:408
Settings → Login Screen, if MDM is not default manager the below message is shown currently.
"MDM (GNOME's display manager) is not active.
You may in fact be using another display manager, for example KDM (KDE's display manager), CDE login (dtlogin), or xdm. If you still wish to use this feature, your system will have to be configured to use MDM instead."
Should ideally include instructions on how to change the default as well. "sudo dpkg-reconfigure mdm". Also, please to consider achieving this via UI better than the one shown by the comamnd. We are way past 1990's. :-)
I tried to compile MDM on a machine with Automake 1.13, but it seems like the autogen.sh doesn't check for 1.13, only 1.9-1.12.
Console output:
thor@Blackbook ~/s/mdm:master(0)> ./autogen.sh --enable-ipv6=yes --with-prefetch
/usr/local/bin/gnome-autogen.sh
checking for autoconf >= 2.53...
testing autoconf2.50... not found.
testing autoconf... found 2.69
checking for automake >= 1.9...
testing automake-1.12... not found.
testing automake-1.11... not found.
testing automake-1.10... not found.
testing automake-1.9... not found.
_Error_: You must have automake >= 1.9 installed
to build mdm. Download the appropriate package for
from your distribution or get the source tarball at
http://ftp.gnu.org/pub/gnu/automake/automake-1.9.tar.gz
I previously posted this in the Cinnamon section but have been told to move it here...
LM 16 x 64 dual monitor set up with NVidia GeForce 9600GT card and NVIDIA Driver 304.108. Right hand monitor is the primary.
When I boot the system, the login box appears with the caret in the password text box. If I start to type, nothing happens. I have to click into the box first which brings up the second issue....
When trying to log in from boot the mouse operation appears reversed. Instead of the mouse traversing left to right from the left monitor to the right monitor (across the join), it has to go left from the left monitor to appear at the right of the right monitor (round the back). Once logged in, normal service is resumed, in that the mouse successfully traverses the central "join" between the left and right monitors when operated from the left to the right. Simple to see, difficult to explain.
I have installed mdm succesfully in xubuntu 13.04, but when I logout in xfce4 or kde 4, I don't get a mdm login screen anymore. Just a black screen with cursor. Where should I look for error?
mdm is latest from mint repo.
In ubuntu 12.10 no problems.
This is a security risk in corporate settings. (The cleaners could jostle the mouse and see a valid logon name.) On the other hand, it could be helpful in other use cases. So, please make it configurable whether or not to show or hide the username on the lock screen.
LMDE mdm-1.04-lmde1
When entering your username or password, if the Tab key is pressed, mdm acts as if the user pressed Enter. For example, if the user is entering their username and then presses Tab, mdm will now ask for their password. If the user is entering their password and presses Tab, the password will be submitted and assuming it's the correct password their session will begin.
Ideally, when pressing Tab the first widget below the textfield (language selection I believe) will be selected.
Note: I am using the default mdm setup. I have not done any customization.
Hi !
That would be great if MDM could include a guest session as it was defined in GDM.
This guest session allows all the user to launch an account, where all the modifications are deleted at the end of the use. This account doesn't appear in the user list and can only be launch with an other account.
It's nice when a friend want to use your computer.
At startup the diagnostic messages shows "fail" next to MDM, and the bootup hangs. So each time I boot I must drop to a shell, log in, then enter "mdm" to start it manually. Then I can log in like normal.
This might be related to the Infinality patches another user is reporting, but I installed Infinality a long time ago. It started happening after a reboot a couple of weeks back (I hardly ever reboot). I'm currently running Mint 14 Nadia, with the Cinnamon Nightly (i.e. the latest updates).
Hello I'm using mdm on archlinux to login on xfce session. If I'm already login and I logout : the greeter appear. Once if I try to login again I have a permanently authentification error. Restart of mdm solve the problem.
Hi,
I tried to compile mdm-1.4.7 but it fails on these messages :
mdmcommon.c:220:38: error: 'preferences_desktop_locale_24' undeclared (first use in this function)
mdmcommon.c:220:38: note: each undeclared identifier is reported only once for each function it appears in
mdmcommon.c:221:46: error: 'preferences_desktop_remote_desktop_24' undeclared (first use in this function)
mdmcommon.c:222:26: error: 'system_log_out_24' undeclared (first use in this function)
mdmcommon.c:223:26: error: 'system_restart_24' undeclared (first use in this function)
mdmcommon.c:224:28: error: 'system_shut_down_24' undeclared (first use in this function)
mdmcommon.c:225:26: error: 'system_suspend_24' undeclared (first use in this function)
mdmcommon.c:226:24: error: 'user_desktop_24' undeclared (first use in this function)
make[3]: *** [mdmcommon.o] Error 1
make[3]: Leaving directory `/var/tmp/fst/src/mdm-1.4.7/gui'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/fst/src/mdm-1.4.7/gui'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/fst/src/mdm-1.4.7'
make: *** [all] Error 2
I try to build these new version of mdm but I reseive build error the log is here
https://gist.github.com/jristz/5222678
let me know if is mdm problem
thanks
PD: If need the configure part of the build tell me and I post it
MDM allows shutdown while other users are logged in without admin/root password. This allows someone to shutdown the system by lock screen --> switch user--> shutdown from mdm
The following issue was resolved in a way, that needs more tuning ...
If you have user accounts with no password, then the very first selection of such user ends with immediate automatic re-login of that user when you try to logout ... the user is pre-selected and as there's no reason for entering the password, mdm automatically skips that step and immediately proceeds with the login ...
My parents want to have separate profiles, but do not want to enter passwords as they trust each other ...
Steps to reproduce:
1.) useradd -m someuser
2.) passwd -d someuser
3.) select a theme with userlist
4.) logout
5.) login as someuser
6.) and now try to logout :(
Actually the support of mdm in systemd is poor or none (but I can manage many workaround to make it work)
you can provide systemd support, is probably unlikeli that Ubuntu (LM base) change from upstart to systemd but Debian can (or not we are not sure), this support for other side can help upstream in Archlinux, Fedora, OpenSUSE and so that already migrated to systemd in find a good option add this display
the modifications neede are support for hibernate, suspend,shutdown (throw poerfoff NOT shutdown command) thow logind a .service archive
that I think
This is the service for systemd that I use in Arch
[Unit]
Description=Linux Mint Display Manager
Documentation=man:mdm(1)
[email protected]
After=systemd-user-sessions.service [email protected]
[Service]
ExecStart=/usr/sbin/mdm --nodaemon
ExecReload=/usr/sbin/mdm-restart
ExecStop=/usr/sbin/mdm-stop
StandardOutput=syslog
Restart=always
RestartSec=1s
TimeoutStopSec=5s
IgnoreSIGPIPE=no
[Install]
Alias=display-manager.service
this is a generic, I have another different for plymouth
[Unit]
Description=LightDM Display Manager
Documentation=man:mdm(1)
[email protected]
After=systemd-user-sessions.service getty@tty1
Conflicts=plymouth-quit.service
After=plymouth-quit.service
[Service]
ExecStart=/usr/sbin/mdm --nodaemon
ExecReload=/usr/sbin/mdm-restart
ExecStop=/usr/sbin/mdm-stop
Restart=always
RestartSec=1s
TimeoutStopSec=5s
StandardOutput=syslog
[Install]
WantedBy=graphical.target
Alias=display-manager.service
the line confict=[email protected] is a workaround for a infinite mdm-restart that happend every 1 minute if tty1 is runing
yes, alongside we add custom pan rules that thank to this the hibernate and suspend work, I not thi using stock powermanager (I use powerdown script) but probably unlickeli to work for the logind lack
pam rules:
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_unix.so
-auth optional pam_gnome_keyring.so
account required pam_unix.so
session required pam_limits.so
session required pam_unix.so
password required pam_unix.so
-session required pam_loginuid.so
-session optional pam_systemd.so
-session optional pam_gnome_keyring.so auto_start
I think that this can help you if you want add systemd
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.