Code Monkey home page Code Monkey logo

Comments (26)

ekohl avatar ekohl commented on June 25, 2024

Which version of facter are you using?

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Looks like 3.9.0 had a lot of code to work around issues like this that was done away with in 4.0.0.

https://github.com/voxpupuli/puppet-snmp/blob/3.9.0/manifests/params.pp

from puppet-snmp.

Dan33l avatar Dan33l commented on June 25, 2024

You are probably using facter 2.x.

Are you using puppet all in one package ?

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Hm. Looks to be fairly old root@stsdevf:~ # facter --version 2.5.1 Yes, I am using the version of puppet pkg installs.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024
puppet4-4.10.12
Name           : puppet4
Version        : 4.10.12
Installed on   : Fri Oct 12 12:34:59 2018 UTC
Origin         : sysutils/puppet4
Architecture   : FreeBSD:11:*
Prefix         : /usr/local
Categories     : sysutils
Licenses       : APACHE20
Maintainer     : [email protected]
WWW            : https://puppetlabs.com/puppet/puppet-open-source
Comment        : Configuration management framework written in Ruby
Options        :
	CFACTER        : off
	DOCS           : on
	EXAMPLES       : on
	RFACTER        : on
Annotations    :
	cpe            : cpe:2.3:a:puppetlabs:puppet:4.10.12:::::freebsd11:x64
	repo_type      : binary
	repository     : FreeBSD
Flat size      : 6.97MiB
Description    :
Puppet lets you centrally manage every important aspect of your system using
a cross-platform specification language that manages all the separate
elements normally aggregated in different files, like users, cron jobs, and
hosts, along with obviously discrete elements like packages, services, and
files.

WWW: https://puppetlabs.com/puppet/puppet-open-source

from puppet-snmp.

Dan33l avatar Dan33l commented on June 25, 2024

If the version of facter is 2.5.1 and version of puppet is 4.10, the package all in one provided by puppetlabs is not used. You should consider to use it.

Facter 2 is old version and not supported by the current version of the module.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

I am fairly certain all I did was pkg install puppet4 to get the version of facter I had. Is this what you mean by the "all in one"?

FWIW, I have tried:

gem install facter --version=2.4.4 && \
gem install hiera  --version=1.3.4 && \
gem install puppet --version=3.8.5

...or the like in the past, but there are some special FreeBSD-isms that the pkg version patches which makes using Puppet on FreeBSD much easier.

At any rate, let me repeat the exercise on a clean FreeBSD 12 VM and see what I get...

from puppet-snmp.

Dan33l avatar Dan33l commented on June 25, 2024

I don't understand why FreeBSD does not follow the puppetlabs matrix versions.
The puppet 4.10 was never provided with facter 2.

And puppet labs does not provide packages AIO for freeBSD.
https://puppet.com/docs/puppet/5.0/puppet_platform.html

I am not a FreeBSD user, it is hard for me to help.

from puppet-snmp.

Dan33l avatar Dan33l commented on June 25, 2024

@decibelhertz probably you have to open an issue on the tracker of packagers to get facter3 compiled on freeBSD.
The last facter 2.4 (2.4.6) was released on january 26, 2016, so about 3 years ago.
https://puppet.com/docs/facter/2.4/release_notes.html

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Fresh install of FreeBSD 12.0-RELEASE confirms that the pkg-provided facter is indeed 2.5.1...

root@stsdevf:~ # which facter
facter: Command not found.
root@stsdevf:~ # pkg -y install puppet4
pkg: illegal option -- y
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 16 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	puppet4: 4.10.12
	rubygem-ruby-augeas: 0.5.0_2
	libxml2: 2.9.7
	augeas: 1.11.0
	readline: 7.0.3_1
	indexinfo: 0.3.1
	ruby: 2.4.5,1
	libyaml: 0.1.6_2
	libunwind: 20170615
	libffi: 3.2.1_2
	libedit: 3.1.20170329_2,1
	ruby24-gems: 2.7.7
	rubygem-hiera: 3.4.5
	rubygem-facter: 2.5.1_2
	dmidecode: 3.2
	rubygem-json_pure: 2.1.0

Number of packages to be installed: 16

The process will require 65 MiB more space.
13 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/16] Fetching puppet4-4.10.12.txz: 100%    1 MiB   1.4MB/s    00:01    
[2/16] Fetching rubygem-ruby-augeas-0.5.0_2.txz: 100%   22 KiB  22.2kB/s    00:01    
[3/16] Fetching libxml2-2.9.7.txz: 100%  818 KiB 837.4kB/s    00:01    
[4/16] Fetching augeas-1.11.0.txz: 100%  648 KiB 663.7kB/s    00:01    
[5/16] Fetching readline-7.0.3_1.txz: 100%  332 KiB 340.3kB/s    00:01    
[6/16] Fetching indexinfo-0.3.1.txz: 100%    6 KiB   6.1kB/s    00:01    
[7/16] Fetching ruby-2.4.5,1.txz: 100%    9 MiB   9.0MB/s    00:01    
[8/16] Fetching libyaml-0.1.6_2.txz: 100%   65 KiB  66.6kB/s    00:01    
[9/16] Fetching libunwind-20170615.txz: 100%  113 KiB 115.8kB/s    00:01    
[10/16] Fetching libffi-3.2.1_2.txz: 100%   34 KiB  35.0kB/s    00:01    
[11/16] Fetching libedit-3.1.20170329_2,1.txz: 100%  123 KiB 125.4kB/s    00:01    
[12/16] Fetching ruby24-gems-2.7.7.txz: 100%  392 KiB 401.6kB/s    00:01    
[13/16] Fetching rubygem-hiera-3.4.5.txz: 100%   35 KiB  36.1kB/s    00:01    
[14/16] Fetching rubygem-facter-2.5.1_2.txz: 100%  202 KiB 206.5kB/s    00:01    
[15/16] Fetching dmidecode-3.2.txz: 100%   64 KiB  65.6kB/s    00:01    
[16/16] Fetching rubygem-json_pure-2.1.0.txz: 100%   95 KiB  97.3kB/s    00:01    
Checking integrity... done (0 conflicting)
[1/16] Installing indexinfo-0.3.1...
[1/16] Extracting indexinfo-0.3.1: 100%
[2/16] Installing libyaml-0.1.6_2...
[2/16] Extracting libyaml-0.1.6_2: 100%
[3/16] Installing libunwind-20170615...
[3/16] Extracting libunwind-20170615: 100%
[4/16] Installing libffi-3.2.1_2...
[4/16] Extracting libffi-3.2.1_2: 100%
[5/16] Installing libedit-3.1.20170329_2,1...
[5/16] Extracting libedit-3.1.20170329_2,1: 100%
[6/16] Installing libxml2-2.9.7...
[6/16] Extracting libxml2-2.9.7: 100%
[7/16] Installing readline-7.0.3_1...
[7/16] Extracting readline-7.0.3_1: 100%
[8/16] Installing ruby-2.4.5,1...
[8/16] Extracting ruby-2.4.5,1: 100%
[9/16] Installing augeas-1.11.0...
[9/16] Extracting augeas-1.11.0: 100%
[10/16] Installing ruby24-gems-2.7.7...
[10/16] Extracting ruby24-gems-2.7.7: 100%
[11/16] Installing dmidecode-3.2...
[11/16] Extracting dmidecode-3.2: 100%
[12/16] Installing rubygem-ruby-augeas-0.5.0_2...
[12/16] Extracting rubygem-ruby-augeas-0.5.0_2: 100%
[13/16] Installing rubygem-hiera-3.4.5...
[13/16] Extracting rubygem-hiera-3.4.5: 100%
[14/16] Installing rubygem-facter-2.5.1_2...
[14/16] Extracting rubygem-facter-2.5.1_2: 100%
[15/16] Installing rubygem-json_pure-2.1.0...
[15/16] Extracting rubygem-json_pure-2.1.0: 100%
[16/16] Installing puppet4-4.10.12...
===> Creating groups.
Creating group 'puppet' with gid '814'.
===> Creating users
Creating user 'puppet' with uid '814'.
[16/16] Extracting puppet4-4.10.12: 100%
Message from ruby-2.4.5,1:

====
Some of the standard commands are provided as separate ports for ease
of upgrading:

	devel/ruby-gems:	gem - RubyGems package manager
	devel/rubygem-rake:	rake - Ruby Make

And some of the standard libraries are provided as separate ports
since they require extra dependencies:

	databases/ruby-gdbm:	GDBM module

Install them as occasion demands.
====
Message from puppet4-4.10.12:

To enable the puppet agent, add the following to /etc/rc.conf:

	puppet_enable="YES"

To enable the puppetmaster, add the following to /etc/rc.conf:

	puppetmaster_enable="YES"

Individual config files such as /usr/local/etc/puppetmasterd.conf are
deprecated. Use a single file, /usr/local/etc/puppet/puppet.conf.

The default PID directory is /var/run/puppet
root@stsdevf:~ # which facter
/usr/local/bin/facter
root@stsdevf:~ # facter --version
2.5.1

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Looks like Puppet 5 on FreeBSD will work around the issue by installing Facter 3.12.0, which is okay enough for me. I'm only testing BSD at this point.

root@stsdevf:~ # pkg remove puppet4
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
	puppet4-4.10.12

Number of packages to be removed: 1

The operation will free 7 MiB.

Proceed with deinstalling packages? [y/N]: y
[1/1] Deinstalling puppet4-4.10.12...
[1/1] Deleting files for puppet4-4.10.12: 100%
==> You should manually remove the "puppet" user. 
==> You should manually remove the "puppet" group 
root@stsdevf:~ # pkg install puppet5
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
Updating pkg.freebsd.org repository catalogue...
pkg.freebsd.org repository is up to date.
All repositories are up to date.
The following 15 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	puppet5: 5.5.6 [pkg.freebsd.org]
	jpeg: 8_7 [FreeBSD]
	pkg-devel: 1.10.99.10 [FreeBSD]
	facter: 3.12.0_1 [pkg.freebsd.org]
	yaml-cpp: 0.6.2 [pkg.freebsd.org]
	leatherman: 1.5.0 [pkg.freebsd.org]
	boost-libs: 1.68.0_1 [pkg.freebsd.org]
	icu: 62.1_2,1 [pkg.freebsd.org]
	cpp-hocon: 0.2.0 [FreeBSD]
	rubygem-hocon: 1.2.5 [pkg.freebsd.org]
	rubygem-gettext-setup: 0.30 [pkg.freebsd.org]
	rubygem-locale: 2.1.2 [pkg.freebsd.org]
	rubygem-gettext: 3.2.6 [pkg.freebsd.org]
	rubygem-text: 1.3.1 [pkg.freebsd.org]
	rubygem-fast_gettext: 1.7.0 [pkg.freebsd.org]

Number of packages to be installed: 15

The process will require 265 MiB more space.
24 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/13] Fetching puppet5-5.5.6.txz: 100%    1 MiB   1.3MB/s    00:01    
[2/13] Fetching facter-3.12.0_1.txz: 100%  404 KiB 414.1kB/s    00:01    
[3/13] Fetching yaml-cpp-0.6.2.txz: 100%  115 KiB 117.3kB/s    00:01    
[4/13] Fetching leatherman-1.5.0.txz: 100%  538 KiB 551.1kB/s    00:01    
[5/13] Fetching boost-libs-1.68.0_1.txz: 100%   12 MiB  12.4MB/s    00:01    
[6/13] Fetching icu-62.1_2,1.txz: 100%    9 MiB   9.9MB/s    00:01    
[7/13] Fetching cpp-hocon-0.2.0.txz: 100%  297 KiB 303.9kB/s    00:01    
[8/13] Fetching rubygem-hocon-1.2.5.txz: 100%  122 KiB 125.1kB/s    00:01    
[9/13] Fetching rubygem-gettext-setup-0.30.txz: 100%   18 KiB  18.0kB/s    00:01    
[10/13] Fetching rubygem-locale-2.1.2.txz: 100%   96 KiB  98.7kB/s    00:01    
[11/13] Fetching rubygem-gettext-3.2.6.txz: 100%  195 KiB 199.8kB/s    00:01    
[12/13] Fetching rubygem-text-1.3.1.txz: 100%   99 KiB 101.5kB/s    00:01    
[13/13] Fetching rubygem-fast_gettext-1.7.0.txz: 100%   23 KiB  23.4kB/s    00:01    
Checking integrity... done (7 conflicting)
  - jpeg-8_7 [FreeBSD] conflicts with jpeg-turbo-2.0.0 [installed] on /usr/local/bin/cjpeg
  - jpeg-8_7 [FreeBSD] conflicts with jpeg-turbo-2.0.0 [pkg.freebsd.org] on /usr/local/bin/cjpeg
  - jpeg-8_7 [FreeBSD] conflicts with jpeg-turbo-2.0.0 [FreeBSD] on /usr/local/bin/cjpeg
  - jpeg-8_7 [pkg.freebsd.org] conflicts with jpeg-turbo-2.0.0 [installed] on /usr/local/bin/cjpeg
  - pkg-devel-1.10.99.10 [FreeBSD] conflicts with pkg-1.10.5_5 [installed] on /usr/local/etc/bash_completion.d/_pkg.bash
  - pkg-devel-1.10.99.10 [pkg.freebsd.org] conflicts with pkg-1.10.5_5 [installed] on /usr/local/etc/bash_completion.d/_pkg.bash
  - facter-3.12.0_1 [pkg.freebsd.org] conflicts with rubygem-facter-2.5.1_2 [installed] on /usr/local/bin/facter
Checking integrity... done (0 conflicting)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 14 package(s) will be affected (of 0 checked):

Installed packages to be REMOVED:
	rubygem-facter-2.5.1_2

New packages to be INSTALLED:
	icu: 62.1_2,1 [pkg.freebsd.org]
	boost-libs: 1.68.0_1 [pkg.freebsd.org]
	leatherman: 1.5.0 [pkg.freebsd.org]
	rubygem-locale: 2.1.2 [pkg.freebsd.org]
	rubygem-text: 1.3.1 [pkg.freebsd.org]
	yaml-cpp: 0.6.2 [pkg.freebsd.org]
	cpp-hocon: 0.2.0 [FreeBSD]
	rubygem-gettext: 3.2.6 [pkg.freebsd.org]
	rubygem-fast_gettext: 1.7.0 [pkg.freebsd.org]
	facter: 3.12.0_1 [pkg.freebsd.org]
	rubygem-hocon: 1.2.5 [pkg.freebsd.org]
	rubygem-gettext-setup: 0.30 [pkg.freebsd.org]
	puppet5: 5.5.6 [pkg.freebsd.org]

Number of packages to be removed: 1
Number of packages to be installed: 13

The process will require 221 MiB more space.

Proceed with this action? [y/N]: y
[1/14] Deinstalling rubygem-facter-2.5.1_2...
[1/14] Deleting files for rubygem-facter-2.5.1_2: 100%
[2/14] Installing icu-62.1_2,1...
[2/14] Extracting icu-62.1_2,1: 100%
[3/14] Installing boost-libs-1.68.0_1...
[3/14] Extracting boost-libs-1.68.0_1: 100%
[4/14] Installing leatherman-1.5.0...
[4/14] Extracting leatherman-1.5.0: 100%
[5/14] Installing rubygem-locale-2.1.2...
[5/14] Extracting rubygem-locale-2.1.2: 100%
[6/14] Installing rubygem-text-1.3.1...
[6/14] Extracting rubygem-text-1.3.1: 100%
[7/14] Installing yaml-cpp-0.6.2...
[7/14] Extracting yaml-cpp-0.6.2: 100%
[8/14] Installing cpp-hocon-0.2.0...
[8/14] Extracting cpp-hocon-0.2.0: 100%
[9/14] Installing rubygem-gettext-3.2.6...
[9/14] Extracting rubygem-gettext-3.2.6: 100%
[10/14] Installing rubygem-fast_gettext-1.7.0...
[10/14] Extracting rubygem-fast_gettext-1.7.0: 100%
[11/14] Installing facter-3.12.0_1...
[11/14] Extracting facter-3.12.0_1: 100%
[12/14] Installing rubygem-hocon-1.2.5...
[12/14] Extracting rubygem-hocon-1.2.5: 100%
[13/14] Installing rubygem-gettext-setup-0.30...
[13/14] Extracting rubygem-gettext-setup-0.30: 100%
[14/14] Installing puppet5-5.5.6...
===> Creating groups.
Using existing group 'puppet'.
===> Creating users
Using existing user 'puppet'.
[14/14] Extracting puppet5-5.5.6: 100%
Message from boost-libs-1.68.0_1:

You have built the Boost library with thread support.

Don't forget to add -pthread to your linker options when
linking your code.
Message from puppet5-5.5.6:

To enable the puppet agent, add the following to /etc/rc.conf:

	puppet_enable="YES"

To enable the puppetmaster, add the following to /etc/rc.conf:

	puppetmaster_enable="YES"

Individual config files such as /usr/local/etc/puppetmasterd.conf are
deprecated. Use a single file, /usr/local/etc/puppet/puppet.conf.

The default PID directory is /var/run/puppet
root@stsdevf:~ # which facter
/usr/local/bin/facter
root@stsdevf:~ # facter --version
3.12.0

I had been using Puppet 4 on FreeBSD with the notion that that would be the closest to my Linux nodes on PE. Looks like I missed factoring in Facter.

All that to say, your module says it both supports Puppet 4 and FreeBSD, but the latest pkg-supplied puppet 4 package does not work with your module. Further, the 3.9.x series of the module you've adopted did work on FreeBSD.

If you don't want to support facter 2.x, I think that you should note this FreeBSD+Puppet 4 incompatibility in your module.

from puppet-snmp.

ekohl avatar ekohl commented on June 25, 2024

Sounds like we should at least update metadata.json to only mention FreeBSD 12 then.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

The problem is not FreeBSD < 12. It is puppet4 on FreeBSD. That package seems to install Facter 2.5.1. puppet5 installs facter 3.12.0. I have not tried, but expect this is true on FreeBSD 11 as well.

So, in short, by only supporting Facter > 3, you only support Puppet >= 5, on FreeBSD.

from puppet-snmp.

alexjfisher avatar alexjfisher commented on June 25, 2024

Unfortunately, it’s very difficult keeping up with what distributions ship which (sometimes weird) combinations.

Puppet 4 actually goes EOL in two weeks time, so we’ll likely be dropping support soon after and it’ll become even more reasonable to expect everyone to be on facter 3 something.

from puppet-snmp.

alexjfisher avatar alexjfisher commented on June 25, 2024

@decibelhertz If you can confirm the module works on FreeBSD 12 (with puppet 5), we can at least add this version to the metadata.json.

Maybe we can add 11 too?? but drop 9 and 10?? Any feedback you can give as to what puppet versions are available on those platforms would be useful.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Unfortunately, I had an issue with my tester node on 11.x, so I had to destroy it and the template that made it. I don't have a lot of time to spare in to stand 11.x back up in my infrastructure at this point, especially since I am only fringe testing FreeBSD (mostly CentOS, here). I can confirm 12.0-RELEASE with puppet 5 works. I strongly suspect 11.x with Puppet 5 is fine too since I expect its installing the same version of Facter.

I guess I'm behind on upgrading my PE; I had not caught the EOL on Puppet 4.

Cheers

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

FWIW, here is the log of test 12-.0-RELEASE node changing from 3.9.0 of this module to 4.1.0...

Notice: /Stage[main]/Snmp/File[snmpd.conf]/content: 
--- /usr/local/etc/snmp/snmpd.conf	2018-12-13 20:47:57.861931000 +0000
+++ /tmp/puppet-file20181213-4913-j4mdk9	2018-12-13 23:35:27.801627000 +0000
@@ -40,13 +40,11 @@
 group   notConfigGroup v1            notConfigUser
 group   notConfigGroup v2c           notConfigUser
 
+#       group          context sec.model sec.level prefix read       write notif
+access  notConfigGroup ""      any       noauth    exact  systemview none  none
 #       name          incl/excl  subtree             mask(optional)
 view    systemview    included   .1.3.6.1.2.1.1
 view    systemview    included   .1.3.6.1.2.1.25.1.1
-
-#       group          context sec.model sec.level prefix read       write notif
-access  notConfigGroup ""      any       noauth    exact  systemview none  none
-
 # ------------------------------------------------------------------------------
 # Typed-View Configuration
 

Notice: /Stage[main]/Snmp/File[snmpd.conf]/content: content changed '{md5}485f1878b3c0727c020ddc2d5f256ada' to '{md5}be1fc7abef158765eb0dc0c8d2263913'
Info: /Stage[main]/Snmp/File[snmpd.conf]: Scheduling refresh of Service[snmpd]
Notice: /Stage[main]/Snmp/Service[snmpd]: Triggered 'refresh' from 1 event
Notice: Applied catalog in 1.31 seconds

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Thinking on this, I will also suggest that moving the defaults from params.pp to data in Hiera may sidestep this issue as well. The fundamental issue is that Puppet is throwing an error in trying to look up a value in a multidimensional array that does not exist in Facter 2.x. Advantages to Hiera being:

  1. I think Hiera does not fail that way; I bet it would return undef, not causing a compilation error. At present, I could not even get FreeBSD+Puppet 4+Facter 2.x to use 4.x of this module, since running params.pp failed.
  2. Being in Hiera, the end-user can override the default for edges cases like I ran into.
  3. Setting a different, older-style, value for FreeBSD would be easier, as appropriate.

from puppet-snmp.

ekohl avatar ekohl commented on June 25, 2024

The alternative is to use fact() which returns undef for unknown facts. That said, IMHO it's still fine to use $facts['fqdn'] in this case since it's guaranteed to work in much more versions while there's no official deprecation yet. If there is, there should be a lint plugin that detects deprecated facts so you can easily update.

from puppet-snmp.

ekohl avatar ekohl commented on June 25, 2024

This can also be considered a duplicate of #169.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

@ekohl -- I agree that $facts['fqdn'] would be the non-deprecated variable that would sidestep this problem. I think either of your suggestions would be better than what is currently present.

Sorry to all about missing #169 . Guess I did not look hard enough.

from puppet-snmp.

bastelfreak avatar bastelfreak commented on June 25, 2024

I'm fine with $facts['fqdn'] as well.

from puppet-snmp.

ghoneycutt avatar ghoneycutt commented on June 25, 2024

@decibelhertz Waiting on tests, though deprecating params in favor of data in module in PR #181

Also we don't support Puppet 4 anymore. If this is still an issue after we release v5.0.0, which should be any day now, please re-open.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Folks -- looking at 5.0.0, which finally uses Hiera (hooray) $facts['fqdn'] was never used. Easy enough to override in my environment, but am curious as to why? More backwards compatibility that way...

from puppet-snmp.

ekohl avatar ekohl commented on June 25, 2024

Which facter version do you have installed? The fqdn fact is a legacy fact.

from puppet-snmp.

decibelhertz avatar decibelhertz commented on June 25, 2024

Wasn't legacy 18 months' back, but of course times change. Looks like I had an old version of facter get installed in my unit tests, which is why I recently noticed.

from puppet-snmp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.